Board logo

标题: Android-使用Dom对XML进行增删改查 更新 2 [打印本页]

作者: look_w    时间: 2019-3-4 19:49     标题: Android-使用Dom对XML进行增删改查 更新 2

封装好之后,就可以写代码,如下:

    //加载文件
    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);

    修改

    //找到具体的node,或者,elemnet,修改:
    node.setNodeValue("edit key");
    node.setTextContent("edit value");




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0