Java 将XML文档转换为字符串

Java 将XML文档转换为字符串,java,xml,string,dom,xmldocument,Java,Xml,String,Dom,Xmldocument,获取XML文档的字符串表示形式(org.w3c.dom.Document)的最简单方法是什么?也就是说,所有节点都将位于一条线上 例如,从 <root> <a>trge</a> <b>156</b> </root> 谢谢 使用Apache XMLSerializer 下面是一个例子: 你也可以检查一下 首先,您需要删除所有文本节点中的所有换行符。然后可以使用标识转换输出DOM树。查看javadoc中的Transf

获取XML文档的字符串表示形式(
org.w3c.dom.Document
)的最简单方法是什么?也就是说,所有节点都将位于一条线上

例如,从

<root>
  <a>trge</a>
  <b>156</b>
</root>

谢谢

使用Apache XMLSerializer

下面是一个例子:

你也可以检查一下


首先,您需要删除所有文本节点中的所有换行符。然后可以使用标识转换输出DOM树。查看javadoc中的
TransformerFactory#newTransformer()

假设
doc
是您的
org.w3c.dom.Document
实例:

TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
StringWriter writer = new StringWriter();
transformer.transform(new DOMSource(doc), new StreamResult(writer));
String output = writer.getBuffer().toString().replaceAll("\n|\r", "");

如果您添加另一个输出属性:
transformer.setOutputProperty(OutputKeys.INDENT,“no”)
writer.getBuffer().toString()
可以是
writer.toString()
@bvdb,这两个功能都很好。显式添加
OutputKeys.INDENT
行还有一个额外的好处,因为这样您还可以将其设置为
“yes”
以保留空白——如果您希望这样做的话(在我的情况下,我发现仅仅删除
replaceAll
并不能将空白包含在字符串中)。另请参见如何使缩进正常工作的解释。可笑的是,yxerces仍然没有通过Maven(因此也是groovy)正式发布,包括没有可靠的源代码或JavaDocs、WTF!没有官方的maven支持会使弃用解决变得更加困难,使一致性更新更加麻烦,并带来安全风险,因此现在依赖它是愚蠢的!
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
StringWriter writer = new StringWriter();
transformer.transform(new DOMSource(doc), new StreamResult(writer));
String output = writer.getBuffer().toString().replaceAll("\n|\r", "");