您好,我需要幫助才能從xpath中提取XML中的信息。在特殊情況下使用XPATH提取屬性值
我將使用XPath提取一個標籤與通用keywork開始的屬性值:
<st:Testprova id='abcd'>
....
</st>
or
<st:Test1prova id='defg'>
....
</st>
我用XPath表達式:
"//*[contains(.,'prova')]/@ID"
,但不起作用。你可以幫我嗎??
您好,我需要幫助才能從xpath中提取XML中的信息。在特殊情況下使用XPATH提取屬性值
我將使用XPath提取一個標籤與通用keywork開始的屬性值:
<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()
。
包括()甚至節點名稱可以返回真像
Testprova
Prodprova
UATprova
provaTest
,另一些曾經包含單詞PROVA。
但是,如果您知道節點名稱所在的模式,那麼matches()函數會精確過濾出所需的節點。
所以,如果我假設一個數字可能都在單詞之間出現的XPath的可以這樣寫下面
//*[matches(name(), '^Test[0-9]?prova$')]//@ID
注:匹配功能Xpath2.0的一部分,不會在Xpath1工作。 0