Java 提取属性';在特殊情况下,使用XPATH设置s值
嗨,我需要帮助用xpath从XML中提取信息 我将使用Xpath提取一个标记的属性值,该标记以泛型键工作开始:Java 提取属性';在特殊情况下,使用XPATH设置s值,java,xml,design-patterns,xpath,tags,Java,Xml,Design Patterns,Xpath,Tags,嗨,我需要帮助用xpath从XML中提取信息 我将使用Xpath提取一个标记的属性值,该标记以泛型键工作开始: <st:Testprova id='abcd'> .... </st> or <st:Test1prova id='defg'> .... </st> 但是不起作用。您能帮我吗???您使用的是@ID而不是@ID,这是区分大小写的。此外,应该使用name()检索节点名 这个XPath表达式 //*[contains(nam
<st:Testprova id='abcd'>
....
</st>
or
<st:Test1prova id='defg'>
....
</st>
但是不起作用。您能帮我吗???您使用的是
@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中不起作用
//*[matches(name(), '^Test[0-9]?prova$')]//@ID