org.w3c.dom.Node的内容如何输出为一个xml文本? 在程序中获得一个org.w3c.dom.Node,如何把它内容输出为一段xml文本,最好同时能格式化。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 因为node不是一个整体的xml,所以要获得一段xml文本,楼主只能分别去拿它的nodename,value等去拼串的。 先把org.w3c.dom.Node生成一个文件也行啊,然后再用dom4j之类的格式化它。 用xerces的XMLSerializer可以,它可以接受serializer.serialize(org.w3c.dom.Document),而Document可以通过node.getOwnerDocument()获得,再用serializer.setOutputFormat设置一下格式化,就可以输出很漂亮的xml了。done! 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()); } ] 设置transformer的三个属性就可以实现格式化,换行并缩进。 transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperty(OutputKeys.CDATA_SECTION_ELEMENTS, "yes"); transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); java.lang.ClassNotFoundException: com.chat.common.User错误,求大神帮忙看看 如何使用java导出大数据为xml文件 一个ITERATOR问题 无符号char型,在java 中怎么定义 大家帮我看看是不是跟系统有关 如何调用LIST返回类型的函数 JScrollPane中嵌入JPane 大家一起来练习 关于类继承后的构造方法 过国庆了,散分了 ArrayList集合构造函数的疑问 JTable删除行
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());
}
]
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.CDATA_SECTION_ELEMENTS, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");