こんにちは私はxpathでXMLから情報を抽出するのに助けが必要です。
Xpathを使用して、一般的なキーワークで始まる1つのタグの属性の値を抽出します。
<st:Testprova id='abcd'>
....
</st>
or
<st:Test1prova id='defg'>
....
</st>
私はそのXpath式を使用しました:
"//*[contains(.,'prova')]/@ID"
しかし、動作しません。手伝って頂けますか??
こんにちは私はxpathでXMLから情報を抽出するのに助けが必要です。
Xpathを使用して、一般的なキーワークで始まる1つのタグの属性の値を抽出します。
<st:Testprova id='abcd'>
....
</st>
or
<st:Test1prova id='defg'>
....
</st>
私はそのXpath式を使用しました:
"//*[contains(.,'prova')]/@ID"
しかし、動作しません。手伝って頂けますか??
@ID
の代わりにを使用しています@id
。これは大文字と小文字が区別されます。さらに、name()
ノード名を取得するためにを使用する必要があります。
このXPath式
//*[contains(name(),'prova')]/@id
戻りabcd
、defg
XMLは正しくありませんが、次のようになります。
<st:Testprova id='abcd'>
....
</st:Testprova>
<st:Test1prova id='defg'>
....
</st:Test1prova>
この場合に使用される正しい関数はmatches()
です。
contains()は、次のようなノード名に対してもtrueを返すことができます
Testprova
Prodprova
UATprova
provaTest
そして、provaという単語を含む他の人。
ただし、ノード名のパターンがわかっている場合は、matches()関数が目的のノードを正確に除外します。
したがって、両方の単語の間に数字が表示される可能性があると仮定すると、xpathは次のように記述できます。
//*[matches(name(), '^Test[0-9]?prova$')]//@ID
注:一致関数はXpath2.0の一部であり、Xpath1.0では機能しません