在程序中获得一个org.w3c.dom.Node,如何把它内容输出为一段xml文本,最好同时能格式化。

解决方案 »

  1.   

    因为node不是一个整体的xml,所以要获得一段xml文本,楼主只能分别去拿它的nodename,value等去拼串的。
      

  2.   

    先把org.w3c.dom.Node生成一个文件也行啊,然后再用dom4j之类的格式化它。
      

  3.   

    用xerces的XMLSerializer可以,它可以接受serializer.serialize(org.w3c.dom.Document),而Document可以通过node.getOwnerDocument()获得,再用serializer.setOutputFormat设置一下格式化,就可以输出很漂亮的xml了。done!
      

  4.   


    public static String toString(Document doc) throws TransformerFactoryConfigurationError, TransformerException{   
            DOMSource source = new DOMSource(doc);   
             StringWriter writer = new StringWriter();   
             Result result = new StreamResult(writer);   
             Transformer transformer = TransformerFactory.newInstance().newTransformer();   
             transformer.setOutputProperty(OutputKeys.INDENT, "yes");   
             transformer.setOutputProperty(OutputKeys.CDATA_SECTION_ELEMENTS, "yes");   
             transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
             transformer.transform(source, result);   
             return (writer.getBuffer().toString());   
        }  
    ]
      

  5.   

    设置transformer的三个属性就可以实现格式化,换行并缩进。
             transformer.setOutputProperty(OutputKeys.INDENT, "yes");   
             transformer.setOutputProperty(OutputKeys.CDATA_SECTION_ELEMENTS, "yes");   
             transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");