首先,读取xml文件,假如我们把myxml.xml文件放在了sd卡的xml文件夹下:
load方法:
public static Document load(String path){
Document document = null;
try{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
document = builder.parse(new File(path));
document.normalize();
}catch(Exception ex){
ex.printStackTrace();
}
return document;
}
调用load方法:
String path = Environment.getExternalStorageDirectory().getPath();
Document document = load(path+"/xml/"+"myxml.xml");
这样就读取了xml文件,接下来进行文件解析,并对读取xml的内容或者进行更改:
读取:
public static String getXml(String element) {
String result = null;
String path = Environment.getExternalStorageDirectory().getPath();
Document document = load(path + "/xmls/" + "Score.xml");
if (document == null) {
Log.e("docNull1", "null");
}
Node root = document.getDocumentElement();
if (root.hasChildNodes()) {
NodeList ftpNode = root.getChildNodes();
for (int i = 0; i < ftpNode.getLength(); i++) {
Node subNode = ftpNode.item(i);
if(subNode.getNodeType() == Node.ELEMENT_NODE&&subNode.getNodeName().equals(element)){
result = subNode.getFirstChild().getNodeValue();
}
}
}
return result;
}
修改
public static void UpdataXml(String element, String result) {
String path = Environment.getExternalStorageDirectory().getPath();
Document document = load(path + "/xmls/" + "Score.xml");
if (document == null) {
Log.e("docNull2", "null");
}
Node root = document.getDocumentElement();
if (root.hasChildNodes()) {
NodeList ftpNode = root.getChildNodes();
for (int i = 0; i < ftpNode.getLength(); i++) {
Node subNode = ftpNode.item(i);
if(subNode.getNodeType() == Node.ELEMENT_NODE&&subNode.getNodeName().equals(element)){
subNode.getFirstChild().setNodeValue(result);
}
}
}
doc2XmlFile(document,path+"/xmls/"+"Score.xml");
}
doc2XmlFile
public static boolean doc2XmlFile(Document document,String path){
boolean flag = true;
try{
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(new File(path));
transformer.transform(source, result);
}catch(Exception ex){
flag = false;
ex.printStackTrace();
}
return flag;
}