这是我的情况。
我有一个包含XML数据的字符串:
<tag>
<anotherTag> data </anotherTag>
</tag>
我接受该字符串并通过此代码运行它以将其转换为Document:
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
return builder.parse(new InputSource(new StringReader(sXMLString)));
}
catch (Exception e) {
// Parser with specified options can't be built
ceLogger.logError("Unable to build a new XML Document from string provided:\t" + e.getMessage());
return null;
}
生成的xml几乎是完美的。但它缺少数据,看起来像这样:
<tag>
<anotherTag />
</tag>
如何在创建XML文档时复制文本以及为什么首先删除文本?
编辑: 实际问题最终成为了这样的问题: 在使用我自己的函数解析XML结构时,这一行就在那里:
if (curChild.getNodeType()==Node.ELEMENT_NODE)
sResult.append(XMLToString((Element)children.item(i),attribute_mask));
但TEXT节点不存在这样的逻辑,因此它们被忽略了。
答案 0 :(得分:5)
您的代码是正确的。我唯一猜到的是你输出的代码不正确。我已经测试了您的代码,并使用以下方法输出,并且XML已正确显示在文本节点中:
public static void outputXML(Document dom) throws TransformerException
{
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
//initialize StreamResult with File object to save to file
StreamResult result = new StreamResult(new StringWriter());
DOMSource source = new DOMSource(dom);
transformer.transform(source, result);
String xmlString = result.getWriter().toString();
System.out.println(xmlString);
}
输出结果为:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<tag> <anotherTag> data </anotherTag>
</tag>