我正在尝试学习xpath,而且我似乎无法找到任何人通过角色通配符获取元素的结果。我不确定这是否可能或如何实现?
示例
<tr>
<th class="textLeft textTop">Opgavebeskrivelse:</th>
<td>
<a id="m_Content_opgaverDS_abc" href="/about">click me</a> <br>
<a id="m_Content_opgaverDS_123" href="/other_stuff">click me too</a><br>
</td>
</tr>
我希望通过搜索<a>
来获取两个id
- 元素。但由于它们并不完全相同,我想使用字符通配符,例如:
//*[@id='m_Content_opgaverDS*']
但是没有找到任何元素。这个
//*[contains(@id, 'm_Content_opgaverDS')]
只找到第一个元素。我需要两个:'(
修改
我在Mac的safari浏览器中使用Javascript控制台来测试Xpath。我要将这些Xpath实现到iOS应用程序中,使用safari浏览器来抓取一些网站。
我在浏览器中声明了这个功能:
function getElementByXpath(path) {
return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
}
然后像这样评估路径:getElementByXpath("//a[starts-with(@id, 'm_Content_opgaverDS')]")
但如果删除.singleNodeValue
部分,我会收到错误:
TYPE_ERR(DOM XPath异常52):表达式不能 转换为返回指定的类型。