使用带有字符通配符

时间:2018-03-20 00:24:53

标签: html xpath xquery

我正在尝试学习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):表达式不能   转换为返回指定的类型。

1 个答案:

答案 0 :(得分:2)

试试这个Renderer2

//a[starts-with(@id, "m_Content_opgaverDS")]

检查

与函数名称一样,它从a开始用第二个参数选择节点@id

Edit:我同时获得//a