XPath表达式选择属性值

3
有没有一种XPath方式可以选择给定的属性值?
例如,我有一个HTML文档,想要仅选择“?ms=669601”:
<input type="button" value="تفاصيل" onclick="xmlreqGET("?ms=669601","jm1x");">

我在Stackoverflow上找到了类似的东西:https://dev59.com/lVPTa4cB1Zd3GeqPjnuJ - Gerhard Powell
1个回答

0
在您的简单示例中,您可以简单地选择仅有的inputonclick属性的那一部分。
substring(input/@onclick, 12, 10)

在更复杂的文档中,尝试首先通过@value(或其他(可能是唯一的)标准)进行选择:
substring(//input[@value='تفاصيل']/@onclick, 12, 10)

或通过针对包含所需子字符串部分的input进行定位:

substring(//input[contains(@onclick, 'xmlreqGET(')]/@onclick, 12, 10)

如果 onclick 属性包含目标字符串,则选择 input 元素本身:

//input[contains(@onclick, '?ms=669601')]

注意:您的输入不是有效的 XML,因为存在嵌套的双引号。


非常感谢,这个很好用:substring(//input[@value='تفاصيل']/@onclick, 12, 10)。 - NouNou
@lwburk 这个代码只选择了一个。在我的代码中有很多<input type="button" value="تفاصيل" onclick="xmlreqGET("?ms=....","jm..");">,我要怎么才能都选择到? - NouNou
@NouNou - 如果这样的话,您可能需要选择所有具有该子字符串的元素(类似于我上面的最后一个表达式)。字符串函数将返回一个字符串。如果您想要多个字符串,则需要从更高层次(即元素级别)来处理此问题。 - Wayne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接