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
获取XPath选择器以输出父元素和子元素的文本_Xpath - Fatal编程技术网

获取XPath选择器以输出父元素和子元素的文本

获取XPath选择器以输出父元素和子元素的文本,xpath,Xpath,我有一个HTML标记,如下所示: <html> <body> <h1>This is a <b>xyz</b> test</h1> </body> </html> 这是一个xyz测试 如果我执行hxs.select('/html/body/h1/text()).extract()输出将是这是一个测试。我应该如何指定XPath,以使输出为这是一个xyz测试您只需编写:'/htm

我有一个HTML标记,如下所示:

<html>
  <body>
      <h1>This is a <b>xyz</b> test</h1>
  </body>
</html>

这是一个xyz测试

如果我执行
hxs.select('/html/body/h1/text()).extract()
输出将是
这是一个测试。我应该如何指定XPath,以使输出为
这是一个xyz测试

您只需编写:
'/html/body/h1'
。使用
text()
函数选择的文本节点是
h1
的子节点(
xyz
不是)。

尝试执行
/html/body/h1//text()
。双斜杠将查找节点的所有下降线,不一定是子节点,您可能需要


XPath表达式选择的每个节点都有相应的字符串值。发件人:

元素节点的字符串值是 中元素节点的所有文本节点子体的字符串值 文件顺序

这正是你想要的。此字符串值通常隐式使用,但您可以使用
string
函数显式检索它。再说一遍:

string函数将对象转换为字符串,如下所示:

  • 通过返回的字符串值将节点集转换为字符串 节点集中文档顺序第一位的节点。如果 节点集为空,则返回空字符串
像这样使用它:

string(/html/body/h1)

是的,如果我这样做,我知道我可以得到整个h1元素(带有html标记)。我的问题是如何使用XPath进行
这是一个xyz测试
(没有html标记),而不需要自己进行任何进一步的手动处理。
string(/html/body/h1)