xpath中*、text()和node()区别


假设有这么一段html:

<div class="post-content">
    <h1>Title</h1>
    <p>Subtitle</p>
    <img src="a.jpg">
    <div>
        <a href="example.html">Goto</a>
    </div>
    Bare text
    <br>
    <!-- this is html comment -->
    <p>Bottom</p>            
</div>

child::*

节点的所有子元素,如//div[@class="post-content"]/*,结果:

<h1>Title</h1>
<p>Subtitle</p>
<img src="a.jpg">
<div>
    <a href="example.html">Goto</a>
</div>
<br>
<p>Bottom</p>

可以看到,这里只选择了有标签名的节点,不在标签内的Bare text和注释都被过滤了。

child::text()

节点的所有文本,如//div[@class="post-content"]/text(),结果:

Bare text

child::node()

节点下的所有内容,不论是标签还是文本还是其他,//div[@class="post-content"]/node(),结果:

Title

Subtitle

Bare text

Bottom

原样输出了其下的所有内容。

原文链接


文章作者: wuzhiyong
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 wuzhiyong !
评论
 上一篇
springboot集成hbase-client,解决包冲突问题 springboot集成hbase-client,解决包冲突问题
spring boot集成hbase https://github.com/SpringForAll/spring-boot-starter-hbase https://juejin.im/post/5cf643186fb9a07eaa22
2020-04-23
下一篇 
B树、平衡二叉树、B+树 B树、平衡二叉树、B+树
二叉树 3 分钟理解完全二叉树、平衡二叉树、二叉查找树 B树 漫画:什么是B-树? B+树 漫画:什么是B+树? 链接 https://juejin.im/entry/5b0cb64e518825157476b4a9
2020-04-21
  目录