如何在不复制周围标记的情况下获取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()不提取任何内容。
任何提示都会非常感激。
由于
答案 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"/>.