1

这是我的情况。

我有一个包含 XML 数据的字符串:

<tag> 
    <anotherTag> data </anotherTag>
</tag>

我获取该字符串并通过此代码运行它以将其转换为文档:

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 节点不存在这样的逻辑,所以它们被简单地忽略了。

4

1 回答 1

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>
于 2012-10-29T20:40:17.783 回答