誰か text() 関数と string() 関数の違いを説明してください。私はよくこれらを一緒に使いますが、違いはありません。どちらも XML ノードの文字列値を取得します。
ベストアンサー1
誰か text() 関数と string() 関数の違いを説明してくれませんか。
I. はtext()
関数ではなくノードテスト。
コンテキスト ノードのすべてのテキスト ノードの子を選択するために使用されます。
したがって、コンテキスト ノードが という名前の要素である場合x
、text()
のすべてのテキスト ノードの子が選択されますx
。
その他の例:
/a/b/c/text()
最上位要素の子でc
ある任意の要素の子である任意の要素のすべてのテキストノードの子を選択します。b
a
II.string()
関数
定義によりstring(exprSelectingASingleNode)
、文字列値ノードの。
要素の文字列値は、そのすべてのテキストノード子孫をドキュメント順に連結したものです。
したがって、次のXML文書では:
<a>
<b>2</b>
<c>3
<d>4</d>
</c>
5
</a>
string(/a)
戻り値(引用符なし):
"
2
3
4
5
"
ご覧のとおり、文字列値は 3 つの空白のみのテキスト ノードを反映していますが、通常はこれに気付かず、考慮に入れません。
一部の XML パーサーには、空白のみのテキスト ノードを削除するオプションがあります。上記のドキュメントを空白のみのテキスト ノードを削除して解析した場合、同じ関数は次のようになります。
string(/a)
次のように返されます:
"23
4
5
"