我希望匹配以下代码的主要段落内容,省略子节点p,div,h3。
<div class="content">
sunday, monday, tuesday,
<br>
<br>
wednesday, thursday,
<br>
friday, saturday
<div class ="tags">sunday</div>
<h3>Days</h3>
<p>....</p>
<div class="style">monday to friday</div>
</div>
我尝试过像//div[@class="content"]/*[not(self::p)]
和//div[@class="content"]/*[not(name()="p")]
这样的Xpath,但它们都不起作用。然后我尝试了//div[@class="content"]/node()[not(div)]
和//div[@class="content"]/node()[not(h3)]
,它只匹配第一个文本。
我需要下面的文本
sunday, monday, tuesday,
<br>
<br>
wednesday, thursday,
<br>
friday, saturday
通过省略孩子div class ="tags",h3,p,div class = style。
发布于 2018-07-08 10:35:47
这应该能起到作用:
//div[@class="content"]/*[not(self::p) and not(self::h3) and not(self::div)]|//div[@class="content"]/text()
sunday, monday, tuesday, wednesday, thursday, friday, saturday
sunday, monday, tuesday, wednesday, thursday, friday, saturday
解释:
//div[@class="content"]
在question*[not(self::p) and not(self::h3) and not(self::div)]
中选择节点,省略子元素: h3,p,div(或者,如果确实需要过滤div class =“and not(self::div[@class="style"]) and not(self::div[@class="tags"])]
”和div class = style).
|//div[@class="content"]/text()
,则使用空白文本()连接,而不是任何div标记
实际上,这有点复杂。也许只选择文本或在节点上执行一些DOM操作会更好。
https://stackoverflow.com/questions/51225120
复制相似问题