使用XPATH获取HTML标记的类名

使用XPATH获取HTML标记的类名,html,xml,xpath,Html,Xml,Xpath,假设我们将这个span标记封装在一个复杂的文档中,如下所示: <div id="box_content"> <div class="heading"> Description </div> Really cool description about something really cool. <br> <div class="more_detail"> </di

假设我们将这个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>

描述
关于一些非常酷的东西的非常酷的描述。

今天的日期是2014年6月6日
如何仅保存
span
类的名称(即“
my-FAV\u numberis49
”),假设文档的格式将保持不变,但
span
类名称可以更改为类似“
my-FAV\u numberis7
”的内容。有办法做到这一点吗


我希望我的问题是清楚的。谢谢你的帮助

此XPath表达式将选择所有
span
元素,这些元素是
div
的子元素,ID为
box\u content
,具有包含字符串
my-FAV\u numberis
的class属性

//div[@id='box_content']/span[contains(@class, 'my-FAV_numberis')]
它将匹配
my-FAV_号码49
my-FAV_号码7
和任何包含
my-FAV_号码的字符串,包括
其他类my-FAV_号码99
此-56-my-FAV_号码不在此处

如果在此上下文中有多个
span
匹配,则将选择一个节点集。可以避免添加更多限制或位置谓词

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

//div[@id='box_content']/span[last()]
//div[@id='box_content']//span[last()]/@class
这是基于您提供的示例。如果
span
元素并不总是
div
的子元素,并且有时可能位于另一个元素内,则可以使用后代轴:

它将选择在任何级别的
div
中出现的最后一个
span

编辑:要从
span
元素中提取类名,可以使用:

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

此XPath表达式将选择所有
span
元素,这些元素是
div
的子元素,ID为
box\u content
,具有包含字符串
my-FAV\u numberis
的class属性

//div[@id='box_content']/span[contains(@class, 'my-FAV_numberis')]
它将匹配
my-FAV_号码49
my-FAV_号码7
和任何包含
my-FAV_号码的字符串,包括
其他类my-FAV_号码99
此-56-my-FAV_号码不在此处

如果在此上下文中有多个
span
匹配,则将选择一个节点集。可以避免添加更多限制或位置谓词

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

//div[@id='box_content']/span[last()]
//div[@id='box_content']//span[last()]/@class
这是基于您提供的示例。如果
span
元素并不总是
div
的子元素,并且有时可能位于另一个元素内,则可以使用后代轴:

它将选择在任何级别的
div
中出现的最后一个
span

编辑:要从
span
元素中提取类名,可以使用:

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

它表示查找带有属性
class
span
标记,该属性以
my-FAV\u numberis
开头,并输出其class属性内容。

试试看


它表示查找一个
span
标记,该标记的属性
class
my-FAV\u numberis
开头,并输出其class属性内容。

第一个答案是有用的

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

第一个答案是有用的

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

您需要发现文档的不变方面。您想要的跨度是否始终是该
div
中的最后一个跨度?这是唯一的一个吗?这是课后第一个有班级标题的吗?还是字符串中有不变的部分?例如
my-FAV_numberis
-它永远不会改变吗?您需要发现文档的不变方面。您想要的跨度是否始终是该
div
中的最后一个跨度?这是唯一的一个吗?这是课后第一个有班级标题的吗?还是字符串中有不变的部分?例如
my-FAV_numberis
-它永远不会改变吗?这不是我想要的,但是谢谢你的回复。您给出的XPATH表达式非常适合在中提取内容,但实际上我只想获得span类名称。例如,您知道“name(path/to/node)”如何给出您要查找的节点的名称吗?这正是我想要的。这个name()函数不适用于我的情况,因为我想计算类名(my-FAV_numberis49),而不仅仅是节点的名称。很抱歉混淆了。您想要完整的字符串吗?您只需在路径中再添加一个步骤:
//div[@id='box\u content']///span[last()]/@class
从那里,您可以根据需要提取数字,因为您知道字符串的不变部分:
子字符串(//div[@id='box\u content']///span[last()]/@class'my-FAV\u numberis')
将在您的示例中返回
49
。这不是我想要的,但感谢您的回复。您给出的XPATH表达式非常适合在中提取内容,但实际上我只想获得span类名称。例如,您知道“name(path/to/node)”如何给出您要查找的节点的名称吗?这正是我想要的。这个name()函数不适用于我的情况,因为我想计算类名(my-FAV_numberis49),而不仅仅是节点的名称。很抱歉混淆了。您想要完整的字符串吗?您只需在路径中再添加一个步骤:
//div[@id='box\u content']///span[last()]/@class
从那里,您可以根据需要提取数字,因为您知道字符串的不变部分:
子字符串(//div[@id='box\u content']///span[last()]/@class'my-FAV\u numberis')
将在您的示例中返回
49
。您可以添加解释吗?您可以添加解释吗?欢迎使用。恳求