【发布时间】:2017-04-25 02:01:15
【问题描述】:
我有一个 HTML 文档,如下所示:
<root><template>title</template>
<h level="3" i="3">Something</h>
<template element="1"><title>test</title></template>
# one
# two
# three
# four
<h level="4" i="5">something1</h>
some random test
<template element="1"><title>test</title></template>
# first
# second
# third
# fourth
<template element="2"><title>testing</title></template>
我要提取:
# one
# two
# three
# four
# first
# second
# third
# fourth
</root>
换句话说,我想要“<template element="1"><title>test</title></template> 之后和之后开始的下一个标签之前的所有文本。”
我可以使用'//root/text()' 获取根目录之间的所有文本,但如何获取特定标签前后的所有文本?
【问题讨论】:
-
我不认为它有一个选择器(我当然可能是错的),也许你可以使用 SAX 方法
-
你能详细说明一下萨克斯的方法吗?
-
sax 是一种一次导航一个标签的方法,而不是使用选择器引用特定标签,但经过一些研究我认为你会面临同样的问题,也就是说,你可以根文本,而不是标签和另一个标签之间的文本,我猜你需要从 '//root/text()' 中减去所有其他标签,或者(如果可以的话)更改模板格式以使用类似
的东西该中间文本的标记。
-
这不是 HTML,而是 XML。此外,示例 XML 不会验证,因为您的关闭
<root>节点位于示例文本之后。