dom4j读写xml文件

循环解析节点:
private void getAllNodes(String xml) {
        try {
            Document authtmp = DocumentHelper.parseText(xml);
            List<Element> list = authtmp.selectNodes("//sms/node");
            for (int j = 0; j < list.size(); j++) {
                Element node = (Element) list.get(j);
                nodeByNodes(node);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private void nodeByNodes(Element node) {
        if (node.element("node") != null) {
            String id = node.attributeValue("id");
            String name = node.attributeValue("name");
            System.out.print(id + "-------");
            System.out.println(name);
            for (Iterator i = node.elementIterator("node"); i.hasNext();) {
                Element newNode = (Element) i.next();
                nodeByNodes(newNode);
            }
        } else {
            String id = node.attributeValue("id");
            String name = node.attributeValue("name");
            System.out.print(id + "-------");
            System.out.println(name);
        }
    }

其次DOM4J的解释

一.Document对象相关

1.读取XML文件,获得document对象.


       SAXReader reader = new SAXReader();
       Document    document = reader.read(new File("input.xml"));

2.解析XML形式的文本,得到document对象.


      String text = "<members></members>";
       Document document = DocumentHelper.parseText(text);

3.主动创建document对象.


       Document document = DocumentHelper.createDocument();
       Element root = document.addElement("members");// 创建根节点

二.节点相关

1.获取文档的根节点.


     Element rootElm = document.getRootElement();

2.取得某节点的单个子节点.


     Element memberElm=root.element("member");// "member"是节点名

3.取得节点的文字


     String text=memberElm.getText();
也可以用:


     String text=root.elementText("name");
这个是取得根节点下的name字节点的文字.

4.取得某节点下名为"member"的所有字节点并进行遍历.


List nodes = rootElm.elements("member");

for (Iterator it = nodes.iterator(); it.hasNext();) {
     Element elm = (Element) it.next();
   // do something
}

5.对某节点下的所有子节点进行遍历.


for(Iterator it=root.elementIterator();it.hasNext();){
                  Element element = (Element) it.next();
                // do something
              }

6.在某节点下添加子节点.


Element ageElm = newMemberElm.addElement("age");

7.设置节点文字.


ageElm.setText("29");

8.删除某节点.


parentElm.remove(childElm);// childElm是待删除的节点,parentElm是其父节点

9.添加一个CDATA节点.


         Element contentElm = infoElm.addElement("content");
         contentElm.addCDATA(diary.getContent());

             contentElm.getText(); // 特别说明:获取节点的CDATA值与获取节点的值是一个方法
             contentElm.clearContent(); //清除节点中的内容,CDATA亦可

你可能感兴趣的:(xml,J#)