Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 外观更干净的XPath表达式_Html_Xpath - Fatal编程技术网

Html 外观更干净的XPath表达式

Html 外观更干净的XPath表达式,html,xpath,Html,Xpath,我有以下HTML: <div> <a href="#"> <span>Appointment Type 1</span> <span>Fri 1 January 2016</span> </a> <a href="#"> <span>Appointment Type 1</span> <span>Sat 2 January

我有以下HTML:

<div>
  <a href="#">
    <span>Appointment Type 1</span>
    <span>Fri 1 January 2016</span>
  </a>
  <a href="#">
    <span>Appointment Type 1</span>
    <span>Sat 2 January 2016</span>
  </a>
  <a href="#">
    <span>Appointment Type 2</span>
    <span>Sat 2 January 2016</span>
  </a>
</div>
有没有更好的方法来编写XPATH


提前谢谢

只需通过索引获取第三个锚点即可:

//div/a[3]
或者,如果要检查内部的
span
文本:

//div/a[span[1]="Appointment Type 2" and span[2]="Sat 2 January 2016"]

只需通过索引获取第三个锚点即可:

//div/a[3]
或者,如果要检查内部的
span
文本:

//div/a[span[1]="Appointment Type 2" and span[2]="Sat 2 January 2016"]

我将使用
//a[span[包含(,'2016年1月2日星期六')]和../a[span[包含(,'约会类型2')]]
。通常不需要使用
text()
,除非您处理混合内容并需要处理单个文本节点。

我将使用
//a[span[包含(,'2016年1月2日星期六')]和../a[span[包含(,'约会类型2')]
。通常不需要使用
text()
,除非您处理混合内容并需要处理单个文本节点。

您可以使用:

//a[3]/span[2]/text()
您可以使用:

//a[3]/span[2]/text()

这完全取决于文档的哪些部分,您可以考虑到足够的不变量,以便使用它来设置初始上下文。它可能是一个位置,但通常是一个id,或相邻节点的某个模式,只出现一次的东西,甚至是始终存在的字符串。一旦知道了上下文,就可以添加额外的步骤和谓词来精确地过滤所需的内容。这取决于文档的哪些部分可以考虑到足够的不变量,以便可以设置初始上下文。它可能是一个位置,但通常是一个id,或相邻节点的某个模式,只出现一次的东西,甚至是始终存在的字符串。一旦您了解了上下文,您就可以添加额外的步骤和谓词来准确地过滤您需要的内容。