text() と string() の違い 質問する

text() と string() の違い 質問する

誰か text() 関数と string() 関数の違いを説明してください。私はよくこれらを一緒に使いますが、違いはありません。どちらも XML ノードの文字列値を取得します。

ベストアンサー1

誰か text() 関数と string() 関数の違いを説明してくれませんか。

I. はtext()関数ではなくノードテスト

コンテキスト ノードのすべてのテキスト ノードの子を選択するために使用されます。

したがって、コンテキスト ノードが という名前の要素である場合xtext()のすべてのテキスト ノードの子が選択されますx

その他の例:

/a/b/c/text()

最上位要素の子でcある任意の要素の子である任意の要素のすべてのテキストノードの子を選択します。ba

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
"

おすすめ記事