В Java, как напечатать XML-документ, используя экранированный текст вместо разделов CDATA? - PullRequest
0 голосов
/ 27 октября 2010

Могу ли я напечатать XML-документ, используя экранированный текст вместо разделов CDATA?Например, я хочу, чтобы выходная строка была &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 голосов
/ 27 октября 2010

Оба XML (CDATA и &gt; и т. Д.) Эквивалентны. Синтаксический анализатор XML будет считывать символьные данные таким же образом и создавать ту же строку. Так что не имеет значения, что используется; просто оставьте его, как это делает генератор XML.

...