比如说:有如下xml文件,test.xml
<?xml version="1.0" encoding="gb2312"?>
<root>
<aaa> 测试节点一</aaa>
<bbb> 测试节点二</bbb>
<ccc> 测试节点三</ccc>
</root>
两个需求:
1:先读取,再注释掉某一个节点,比如aaa节点(<!--<aaa> 测试节点一</aaa>-->);再写回到test.xml文件中。2:在把上次注释掉的取消,再写回。

解决方案 »

  1.   

    你可以参考这段代码import java.io.File;import org.dom4j.Comment;
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;
    import org.dom4j.Node;
    import org.dom4j.io.SAXReader;/* 
     * 创建日期 2008-1-14
     *//**
     * @author C2One
     * @version 1.0
     * @see 添加注释
     */
    public class Main {public static void main(String[] args) throws DocumentException {
    SAXReader reader = new SAXReader();
            Document  document = reader.read(new File("input.xml"));
            Node root=document.selectSingleNode("/root");
            Node aaa=document.selectSingleNode("/root/aaa");
            Element rootEl = (Element) root;
            
            //注释
            rootEl.remove(aaa);
            Comment com = DocumentHelper.createComment(aaa.asXML());
            rootEl.add(com);
            
            //取消注释
            Node bbb = document.selectSingleNode("/root/comment()");
            rootEl.remove(bbb);
            Element e = DocumentHelper.createElement("aaa");
            e.setText(aaa.getText());
            rootEl.add(e);
            
            System.out.println(document.asXML());
    }
    }
      

  2.   

    谢谢楼上的。现在有一个问题。怎样才能把document.asXML()组织的xml文件再次写入到xml文件中呢?我现在使用如下代码实现,但有错误!< 变成 &lt;了。代码如下:
    XMLWriter output = null;
    OutputFormat format = OutputFormat.createPrettyPrint();
    document.setXMLEncoding("gb2312");
    output = new XMLWriter(new FileWriter(new File("databaseSync1.xml")), format);
    System.out.println(document.asXML());
    //document.setXMLEncoding("gb2312");
    output.write(document.asXML());
    output.close();
      

  3.   


            OutputFormat format = OutputFormat.createPrettyPrint();
            format.setEncoding("gb2312");
            XMLWriter writer = new XMLWriter(new FileWriter("output1.xml"),format);
            writer.write(document);
            writer.close();
      

  4.   

    谢谢楼上的。现在写入的不是document。而是一个字符串:比如:
    String xmlS = "<?xml   version="1.0"   encoding="gb2312"?> 
    <root> 
    <aaa>   测试节点一 </aaa> 
    <bbb>   测试节点二 </bbb> 
    <ccc>   测试节点三 </ccc> 
    </root> 
    ";
    能不乱码的写入指定的xml文件中。谢谢
      

  5.   

    writer.write(DocumentHelper.parseText(document.asXML()));
      

  6.   

    谢谢,刚我测试以下,还是有些问题,如果写入的字符串内有<!--><aaa>aaaa </aaa>-->就报错了。有什么方法解决吗?谢谢。
      

  7.   

    <!--> <aaa> aaaa   </aaa> --> 
    这个不是xml格式~`所以报错呗
    如果你要写这种的,直接用File的写就行了,不用xml``
      

  8.   

    哎,分赚得不容易啊
            FileWriter fw = new FileWriter("output2.xml");
            fw.write(document.asXML());
            fw.close();
      

  9.   

    我按照上面删除注释怎么不行啊
    Element element=(Element)document.selectsingleNode("/root/comment()");
    Element parent =(Element)document.selectsingleNode("/root");
    parent.remove(element);
     高手帮帮忙