//加载文件
XmlUtils.loadWithDomRx("/sdcard/Test.xml")
.subscribe(document -> {
//判断是否加载到文件
if (document!=null && document.getDocumentElement()!=null) {
//判断有无node
NodeList nodeList = document.getDocumentElement().getChildNodes();
if (nodeList != null) {
//遍历node list
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
//判断是否是package节点
if (node.getNodeName() != null && node.getNodeName().equals("package")) {
//提取参数列表
NamedNodeMap namedNodeMap = node.getAttributes();
if (namedNodeMap != null && namedNodeMap.getLength()>0) {
//判断参数中是否有com.xx.xx
Node n = namedNodeMap.item(0);
if (n.getNodeName()!=null && n.getNodeName().equals("name")) {
if (n.getTextContent()!=null && n.getTextContent().equals("com.xx.xx")) {
//进行您的操作
}
}
}
}
}
}
}
});
注意,要做好判空。有可能很多node不存在参数,或者没有子节点。
5. 增删改
当加载xml到内存中后,你可以对document进行修改
增加
Element element = document.createElement("New Node");
element.setAttribute("key1","value1");
element.setAttribute("key2","value2");
node.appendChild(element);
删除
//注意的是,你需要先找出这个node对象,因为api没有提供直接remove index 的node的方法。
element.removeChild(node);
node1.removeChild(node2);