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 に答える