试试/date/descendant::*查找出来再替换行不

解决方案 »

  1.   

    dom4j中没有替换的api,所以只有先删了第2个的date节点,然后再将第1个的date节点添加进去import java.io.FileWriter;
    import java.io.IOException;
    import org.dom4j.*;
    import org.dom4j.io.*;public class ReplaceDocument {
    public static void main(String[] args)throws DocumentException {
    String str1="<root><head/><date><username>张三</username><userid>123</userid></date></root>"; 
    String str2="<root><time>hour</time><date>month</date></root>";

    Document doc1=DocumentHelper.parseText(str1);
    Document doc2=DocumentHelper.parseText(str2);
    Element root=doc2.getRootElement();
    root.remove(root.element("date"));
    Element dateElt=DocumentHelper.createElement("date");
    dateElt.appendContent((Element)doc1.selectSingleNode("//date"));
            doc2.getRootElement().add(dateElt);
    OutputFormat outFmt=new OutputFormat("  ",true,"gb2312");
            try{
             XMLWriter xmlWriter=new XMLWriter(System.out,outFmt);
    xmlWriter.write(doc2);
    xmlWriter.close();
    }
    catch(IOException e){
    e.printStackTrace();
    }
    }
    }输出为:
    <?xml version="1.0" encoding="gb2312"?><root>
      <time>hour</time>
      <date>
        <username>张三</username>
        <userid>123</userid>
      </date>
    </root>