0

Apache xerces DOMParser と org.w3c.dom.Document を使用して xml ドキュメントを解析しています。要素を見つけてテキスト コンテンツを設定しようとしているときに、エラーはスローされませんが、setNodeValue(String) メソッドはノードにコンテンツを設定していません。ノードはテキストノードです。デバッグすると、nextSibling や firstChild などのプロパティが #text または \n であることがわかりました。これらの空白と #text を削除するには? setNodeValue() メソッドが機能しないのはなぜですか?

もう 1 つ質問があります: "tns:result" などの名前空間を持つ ElementBytagName ドキュメント要素を取得するにはどうすればよいですか?

以下のxmlで:

<document xmlns:tns="....">
<header>
 <tns:username/>
</header>
</document>

document.getElementsByTagName("tns:username").items(0).setNodeValue("hello");

しかし、これを行った後、結果のxmlはまだ同じです。

4

1 に答える 1

0

ノード タイプがELEMENT_NODE(あなたの場合のように) である場合、呼び出しsetNodeValue(...)は効果がありません (のドキュメントを参照してくださいNode#setNodeValue(String ...)。代わりに子テキスト ノードを作成する必要があります。

あなたが見ているテキストノードに関しては、それらはドキュメントにあります。それらを削除すると、すべてのタグが 1 行に表示されます。XML を処理するときは、意味のない空白を無視する準備をしておく必要があります。パーサーは、どの空白があなたにとって重要でないかを知らないため、それを行うことはできません。

于 2013-01-16T07:11:35.513 に答える