使用XPATH获取HTML标记的类名

时间:2014-06-04 20:48:14

标签: html xml xpath

假设我们将这个span标记<span class="my-FAV_numberis49"></span>包含在如下的复杂文档中:

<div id="box_content">
    <div class="heading">
        Description
    </div>
    Really cool description about something really cool.
    <br>

    <div class="more_detail">

    </div>
    <div class="more_detail">
        <span class="date">Today's Date is</span>June 06 2014
    </div>
    <span class="my-FAV_numberis49"></span>
</div>

如何仅保存span类的名称(即“my-FAV_numberis49”)让我们假设文档的格式将保持不变,但span类名称可以更改为“my-FAV_numberis7”之类的内容。有没有办法做到这一点?

我希望我的问题很明确。谢谢您的帮助。

3 个答案:

答案 0 :(得分:2)

此XPath表达式将选择{em>所有 span div个<{1>}元素<{1}},其ID为box_content有一个类属性包含字符串my-FAV_numberis

//div[@id='box_content']/span[contains(@class, 'my-FAV_numberis')]

它将匹配my-FAV_numberis49my-FAV_numberis7包含my-FAV_numberis的任何字符串,包括other-class my-FAV_numberis99this-56-my-FAV_numberisnothere

如果在此上下文中有多个匹配的span,则会选择 node-set 。您可以避免添加更多限制或位置谓词。

如果span是该上下文中的最后 span 子元素,您可以使用:

//div[@id='box_content']/span[last()]

这是基于您提供的示例。如果span元素并非始终是div,有时可能在另一个元素中,那么您可以使用后代轴:< / p>

//div[@id='box_content']//span[last()]

将选择span内任何级别内的最后 div

编辑:从您可以使用的span元素中提取名称:

//div[@id='box_content']//span[last()]/@class

答案 1 :(得分:1)

//span[starts-with(@class, 'my-FAV_numberis')]/@class

它表示查找带有span的{​​{1}}标记,该标记以class开头并输出其类属性内容。

答案 2 :(得分:0)

第一个回答很有用

//div[@id='box_content']/span[contains(@class, 'my-FAV_numberis')]
exact the class name try //span[starts-with(@class, 'my-FAV_numberis')]/@class