【问题标题】:In Java, how to print an XML document using escaped text instead of CDATA sections?在 Java 中,如何使用转义文本而不是 CDATA 部分打印 XML 文档?
【发布时间】:2010-10-27 09:36:24
【问题描述】:

我可以使用转义文本而不是 CDATA 部分来打印 XML 文档吗?例如,我希望输出字符串为<sender>John Smith</sender> 而不是<![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>

非常感谢。

【问题讨论】:

    标签: java xml cdata


    【解决方案1】:

    两种 XML(CDATA 和 &amp;gt; 等)是等效的。 XML 解析器将以相同的方式读取字符数据并生成相同的字符串。所以使用哪个并不重要;只需保留它,但 XML 生成器会这样做。

    【讨论】:

    • 感谢您的回答。我知道 XML 文档可以以两种方式表示而没有任何语义差异,但我想在屏幕上打印输出字符串。
    猜你喜欢
    • 1970-01-01
    • 2011-09-07
    • 2021-01-26
    • 2021-11-04
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多