我有以下与XPATH中的语法相关的问题,感谢您对错误所在的表示:
如果我使用://@id
,它会返回正确的结果,如果我想使用starts-with
使其更具体,它对我不起作用,我尝试使用:
//*[@id(starts-with(.,17))]
//*@id[starts-with(.,17)]
哪里可能是错误?
答案 0 :(得分:1)
您的第一次尝试XPath不起作用,因为@id()
无效的XPath表达式,也许您打算使用[]
来构建谓词。至于第二次尝试,以下部分不被识别为有效的XPath表达式:*@id
。另一件事是starts-with()
期望两个参数都是string类型。更正这些错误将为您提供一个XPath,它将正确返回id
属性值以17
开头的元素:
//*[@id[starts-with(.,'17')]]
上面的XPath可以简化如下:
//*[starts-with(@id,'17')]
如果您要返回id
属性本身而不是元素,则需要修改XPath,如其他答案中所述:
//@id[starts-with(.,'17')]