<?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的某一个节点?  谢谢

解决方案 »

  1.   

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

  2.   


    XML 怎么修改某一个节点的值? 是需要全部取出来,再全部写进去吗?
      

  3.   

    循环bc下所有url结点就可以了。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();
    }
    }
    }