在Java中,如何使用转义文本而不是CDATA部分打印XML文档?

时间:2010-10-27 09:36:25

标签: java xml cdata

我可以使用转义文本而不是CDATA部分打印XML文档吗?例如,我希望输出字符串为&lt;sender&gt;John Smith&lt;/sender&gt;而不是<![CDATA[<sender>John Smith</sender>]]>。更新:我知道XML文档可以用两种方式表示,没有任何语义差异,但我想在屏幕上打印输出字符串。

这是我的代码:

Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "5");
StringWriter streamWriter = new StringWriter();
StreamResult streamResult = new StreamResult(streamWriter);
DOMSource source = new DOMSource(xml);
transformer.transform(source, streamResult);
return streamWriter.toString();

这是输出:

<?xml version="1.0" encoding="UTF-8"?>
<VNET>
  <ID>1</ID>
  <UID>0</UID>
  <NAME>ranged</NAME>
  <TYPE>0</TYPE>
  <BRIDGE>virbr0</BRIDGE>
  <PUBLIC>1</PUBLIC>
  <TEMPLATE>
    <BRIDGE><![CDATA[virbr0]]></BRIDGE>
    <NAME><![CDATA[ranged]]></NAME>
    <NETWORK_ADDRESS><![CDATA[192.168.0.0]]></NETWORK_ADDRESS>
    <NETWORK_SIZE><![CDATA[c]]></NETWORK_SIZE>
    <TYPE><![CDATA[ranged]]></TYPE>
  </TEMPLATE>
  <LEASES/>
</VNET>

非常感谢。

1 个答案:

答案 0 :(得分:0)

两种XML(CDATA&gt;等)都是等效的。 XML解析器将以相同的方式读取字符数据并生成相同的字符串。所以使用哪个并不重要;只要保留它,XML生成器就可以了。