2

属性の 1 つに特定の文字列を含むノードを選択しようとしていますが、特定の属性でしか実行できないようです。

var tempUsers = xmlDocument.selectNodes("//Users/*[contains(@Id,'TEXT')]");

@Id の代わりに、ID だけでなく、ノードのすべての属性をチェックする何かを書くことができると思います。

ありがとう。

4

1 に答える 1

5

xpath で使用@*してすべての属性を選択できますが、素朴な

//Users/*[contains(@*,'TEXT')]

あなたが期待することはしませ。関数は引数が文字列であることを想定しているため、代わりにノード セットを指定すると、最初にノード セットを文字列に変換し (セット内の最初containsのノードの文字列値を取得して)、関数でその値を使用します。 . 代わりに言う必要があります

//Users/*[@*[contains(.,'TEXT')]]

これにより、ドキュメント内のすべての要素が検索Usersされ、値に substring が含まれる属性を持つすべての子要素が選択されますTEXT

于 2012-10-21T12:46:20.880 に答える