日期:2014-05-19  浏览次数:20696 次

dom4j 解析XML 中同名的节点。 谢谢
<?xml version="1.0" encoding="UTF-8"?>
<abc>
  <a>111</a>
  <b>2222</b>
  <bc>
  <url>http://forum.csdn.net/2121</url>
  <url>http://forum.csdn.net/444</url>
  <url>http://forum.csdn.net/222</url>
  <url>http://forum.csdn.net/2342</url>
  <url>http://forum.csdn.net/234</url>
  <url>http://forum.csdn.net/33</url>
  <url>http://forum.csdn.net/44</url>
  <url>http://forum.csdn.net/555</url>
  <url>http://forum.csdn.net/666</url>
  </bc>
</abc>

上述这种格式的XML。 我需要把 url的节点的内容全部解析出来,用dom4j怎么解析? 如果我解析出来了,我根据什么去修改url的某一个节点? 谢谢

------解决方案--------------------
http://topic.csdn.net/u/20101104/17/5b09429f-994d-4bec-830a-d9064b98a64b.html

------解决方案--------------------
循环bc下所有url结点就可以了。

Java code
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class Test1 {

    public static void main(String[] args) {
        SAXReader reader = new SAXReader();
        File file = new File("d:\\test.xml");        
        try {
            Document document = reader.read(file);
            
            List<Element> urls = document.selectNodes("abc/bc/url");
            if(urls != null && urls.size() > 0){
                for(Iterator it = urls.iterator();it.hasNext();){
                    Element url = (Element)it.next();
                    System.out.println(url.getText());//打印原值
                    
                    url.setText("http://forum.csdn.net/");//修改
                }
            }
            
            
            OutputFormat format = OutputFormat.createPrettyPrint();
            XMLWriter output = new XMLWriter(new FileOutputStream(new File("d:\\test1.xml")), format);
            output.write(document);
            output.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}