1

こんにちは私はxpathでXMLから情報を抽出するのに助けが必要です。

Xpathを使用して、一般的なキーワークで始まる1つのタグの属性の値を抽出します。

<st:Testprova id='abcd'>
  ....
</st>

  or

<st:Test1prova id='defg'>
  ....
</st>

私はそのXpath式を使用しました:

"//*[contains(.,'prova')]/@ID"

しかし、動作しません。手伝って頂けますか??

4

2 に答える 2

2

@IDの代わりにを使用しています@id。これは大文字と小文字が区別されます。さらに、name()ノード名を取得するためにを使用する必要があります。

このXPath式

//*[contains(name(),'prova')]/@id

戻りabcddefg

XMLは正しくありませんが、次のようになります。

<st:Testprova id='abcd'>
  ....
</st:Testprova>
<st:Test1prova id='defg'>
  ....
</st:Test1prova>
于 2012-09-14T12:20:35.403 に答える
1

この場合に使用される正しい関数はmatches()です。

contains()は、次のようなノード名に対してもtrueを返すことができます

Testprova
Prodprova
UATprova
provaTest

そして、provaという単語を含む他の人。

ただし、ノード名のパターンがわかっている場合は、matches()関数が目的のノードを正確に除外します。

したがって、両方の単語の間に数字が表示される可能性があると仮定すると、xpathは次のように記述できます。

//*[matches(name(), '^Test[0-9]?prova$')]//@ID

注:一致関数はXpath2.0の一部であり、Xpath1.0では機能しません

于 2012-09-14T13:22:53.943 に答える