我需要帮助从xpath中提取XML信息。
我将使用Xpath来提取以通用关键字开头的一个Tag的属性值:
<st:Testprova id='abcd'>
....
</st>
or
<st:Test1prova id='defg'>
....
</st>
我使用了Xpath表达式:
"//*[contains(.,'prova')]/@ID"
但不起作用。你能救我吗?
答案 0 :(得分:2)
您使用@ID
代替@id
,这是区分大小写的。此外,您应该使用name()
来检索节点名称。
此XPath表达式
//*[contains(name(),'prova')]/@id
返回abcd
和defg
虽然您的XML不正确,但应该是:
<st:Testprova id='abcd'>
....
</st:Testprova>
<st:Test1prova id='defg'>
....
</st:Test1prova>
答案 1 :(得分:1)
在这种情况下使用的正确函数是matches()
。
contains()也可以返回true
Testprova
Prodprova
UATprova
provaTest
和其他包含单词prova的人。
但是如果你知道节点名称所使用的模式,那么matches()函数就会过滤掉所需的节点。
因此,如果我假设两个单词之间可能出现一个数字,则xpath可以写成如下所示
//*[matches(name(), '^Test[0-9]?prova$')]//@ID
注意:匹配函数是Xpath2.0的一部分,在Xpath1.0中不起作用