2014-11-24 91 views
0

我试图XML字符串存储在XML文件中按以下方式存储XML字符串

String appData = "<Data><element><displayname>John</displayname></element></Data>"; 


org.w3c.dom.Element appData= doc.createElement("appData"); 
rootElement.appendChild(appData); 
org.w3c.dom.Element appXmlData= doc.createElement("myData"); 
appData.appendChild(appXmlData); 
appXmlData.setTextContent(appData); 

TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
Transformer transformer = transformerFactory.newTransformer(); 
DOMSource source = new DOMSource(doc); 
StreamResult result = new StreamResult(new File(path1)); 
transformer.transform(source, result); 

的数据存储在XML作为

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<appData> 
<myData> 
     &lt;Data&gt;&lt;element&gt;&lt;displayname&gt;John&lt;/displayname&gt;&lt;/element&gt;&lt;/Data&gt; 
</myData> 

什么我想要的是

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<appData> 
<myData> 
    <Data><element><displayname>John</displayname></element></Data> 
</myData> 

帮我实现这个

+1

您不能像“<" ">”是XML的特殊关键字一样,它们不能出现在它的内容中。相反,它们分别替换为<和>。任何包含“<" ">”的XML在任何内容中的值都不会是正确的XML,并且将无法验证 – MihaiC 2014-11-24 13:31:49

+0

请阅读更多信息:http://xml.silmaril.ie/specials.html – MihaiC 2014-11-24 13:33:02

+0

您可以使用CDATA并添加您的字符串在'myData'里面只有它会保留'<' & '>'符号。 – OO7 2014-11-24 13:34:12

回答

0

像你这样一个

org.w3c.dom.Element appXmlData= doc.createElement("myData"); 

你必须为你的其他节点创建的子元素:

org.w3c.dom.Element dataNode= doc.createElement("Data"); 
appXmlData.appendChild(dataNode); 

等等......既然你正在使用dom api,它会转义您节点中的xml内容。

+0

是的,我可以这样做。但事情是我有一个很大的XML字符串,这使我寻找替代品 – Saha 2014-11-24 13:47:36