2011-10-06 28 views
0

.NETのSystem.Xml.XmlNode.InnerXmlに相当するJavaはありますか?Javaに相当するSystem.Xml.XmlNode.InnerXml

XML文書でいくつかの単語を置き換える必要があります。

XMLノードを削除するため、Javaのorg.w3c.dom.Node.setTextContent()を使用することはできません。

ありがとうございます!

出典:

<body> 
<title>Home Owners Agreement</title> 
<p>The <b>good</b> thing about a Home Owners Agreement is that...</p> 
</body> 

所望の出力:

<body> 
<title>Home Owners Agreement</title> 
<p>The <b>good</b> thing about a HOA is that...</p> 
</body> 

私だけ<p>タグ内のテキストを交換することにしたいです。私は、次のことを試してみました:

replaceText(string term, string replaceWith, org.w3c.dom.Node p){ 
     p.setTextContent(p.getTextContent().replace(term, replaceWith)); 

} 

上記のコードに問題がpのすべての子ノードが迷子ということです。

答えて

0

さて、私は解決策を考え出しました。

これの鍵は、実際のノードのテキストを置き換えたくないということです。実際にはテキストだけの子表現があります。

private static void replace(Node root){ 
    if (root.getNodeType() == root.TEXT_NODE){ 
     root.setTextContent(root.getTextContent().replace("Home Owners Agreement", "HMO")); 
    } 
    for (int i = 0; i < root.getChildNodes().getLength(); i++){ 
     outputTextOfNode(root.getChildNodes().item(i)); 
    } 
} 
0

jdomをご覧ください。 document.getRootElement().getChild("ELEMENT1").setText("replacement text");

よう

何かがあなたはJDOM文書に文書を変換してやるべきことを少し持っていますが、あなたのためにそれはかなり容易にするアダプタがあります。また、XMLがファイル内にある場合は、JDOM Builderクラスを使用して操作するDOMを作成できます。 `

+0

これを実行すると、私はまだELEMENT1の子要素を失うことはありませんか? – joe

+0

あなたはもっと具体的な例を挙げることができますか?私はあなたが変更しようとしているXMLを視覚化するのが難しいと思っています。 – DaveH

+0

は例を使って質問を更新しました。問題は、p.setTextContent()を使用すると子ノードが失われることです。 – joe

関連する問題