Android对复杂xml的增删改查操作
采用dom方式 对以下XML文件的节点进行增删改查。
<?xml version="1.0" encoding="utf-8"?>
<params>
<version>1.0</version>
<playlist>
<day>
<d20170610 time="2017-06-01 12:34:56">aa</d20170610>
</day>
</playlist>
<medialist>
<day>
<d20170610 time="2017-06-01 12:34:56">bb</d20170610>
<d20170704 time="2017-06-01 12:34:56">cc</d20170704>
</day>
</medialist>
</params>
1 加载XML文件:
public static Document load(String filename) {
Document document = null;
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
File file = new File(filename);
document = builder.parse(file);
document.normalize();
} catch (SAXParseException saxe) {
saxe.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
return document;
}
2 添加元素:
其中PlayBean是数据源,str判断是playlist,还是medialist 。
public void addElement(String filename, PlayBean playBean, String str) {
Element root = document.getDocumentElement();
NodeList stuNodeList = root.getElementsByTagName(str);
for (int i = 0; i < stuNodeList.getLength(); i++) {
Element stuElement = (Element) stuNodeList.item(i);
NodeList stuInforList = stuElement.getChildNodes();
for (int j = 0; j < stuInforList.getLength(); j++) {
Node stuInforNode = stuInforList.item(j);
if (stuInforNode.getNodeName().equals("day")) {
NodeList dayN = stuInforNode.getChildNodes();
String qTime = playBean.getQueryDate();
if (!qTime.startsWith("d")) {
qTime = "d" + qTime;
}
Element key = document.createElement(qTime);
Text nameText = document.createTextNode(playBean.getListname()