抓取xPath内容而不包含标记

时间:2011-05-14 12:59:05

标签: xpath

如何在不复制周围标记的情况下获取xPath的内容?

<div id="node-123" class="clearfix">
                    <div class="content">
                        <div class="body">
                            <p><img src="/images/image.jpg"/></p>
                            <p>Some content ....</p>
                        </div>    
                    </div>
                </div>

如果我使用了//div[@id='node-123']/div/div,我仍然会遇到<div class="body">,这是不期望的。

我想要的是<div class="body">的内容,不包括此<div class="body">标记,但保留内容中的其他标记,p,img等。

我尝试使用通配符://div[@id='node-123']/div/div/*,但这只会获取第一个p,其中p可以是两个或多个。使用node()不提取任何内容。

任何提示都会非常感激。

由于

2 个答案:

答案 0 :(得分:2)

  

如果我用过   //div[@id='node-123']/div/div,我   仍然没有预料到的<div class="body">

     

我想要的是<div class="body">的内容,不包括此<div class="body">标记,但保留   内容中的其他标记p,   img等等。

使用

//div[@id='node-123']/div/div/node()

这将选择作为任何div元素的子元素的所有节点(元素,文本节点,处理指令和注释节点),该元素是任何div元素的子元素。文档中的任何div元素,使其id属性的值为'node-123'。

警告如果XML文档的结构是静态已知的,最好不要使用//伪操作符。使用//伪操作符最常导致性能非常低,从而导致完整的树遍历。

答案 1 :(得分:0)

问题是在实际原始文章中没有终止img标记:<img src="/images/image.jpg">而不是<img src="/images/image.jpg"/>.