2010-10-27 19 views
0

Puis-je imprimer un document XML en utilisant du texte échappé au lieu de sections CDATA? Par exemple, je souhaite que la chaîne de sortie soit &lt;sender&gt;John Smith&lt;/sender&gt; au lieu de <![CDATA[<sender>John Smith</sender>]]>. MISE À JOUR: Je sais qu'un document XML peut être représenté dans les deux sens sans différence sémantique, mais je veux imprimer la chaîne de sortie à l'écran.En Java, comment imprimer un document XML en utilisant du texte échappé au lieu de sections CDATA?

Voici mon code:

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(); 

Et voici la sortie:

<?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> 

Merci beaucoup.

Répondre

0

Les deux XML (CDATA et &gt; etc.) sont équivalents. Un analyseur XML lira les données de caractères de la même manière et produira la même chaîne. Donc, peu importe ce qui est utilisé; il suffit de le laisser cependant le générateur XML le fait.

+0

Merci d'avoir répondu. Je sais qu'un document XML peut être représenté dans les deux sens sans aucune différence sémantique, mais je veux imprimer la chaîne de sortie à l'écran. –