繁体   English   中英

当节点不存在时,xPath前置不起作用

[英]xPath preceding doesn't work when node not exist

例如xml:

<ul id="list">
<li>
    <h3 class="title">
    <a>text 1</a>
    </h3>
</li>
<li>
    <h3 class="title">
    <a>text 2</a>
    </h3>
</li>
<li>
    <h3 class="title">
    <a>text 3</a>
    </h3>
</li>
<li>
    <div class="sifExp">
        <span>...</span>
    </div>
</li>
<li>
    <h3 class="title">
    <a>text 4</a>
    </h3>
</li>
</ul>

前面的xPath:

//ul[@id='list']//div[@class='sifExp']/preceding::li//h3[@class='title']/a

工作正常。 结果是:

text 1
text 2
text 3

但是当xml没有<div class="sifExp">节点时,上面的表达式不起作用。

  1. 为什么?
  2. 当节点<div class="sifExp">不存在时text 1, text 2, text 3, text 4有没有办法获取所有内容( text 1, text 2, text 3, text 4 )?

让我们找到在div[@class='sifExp']之前没有的li div[@class='sifExp'] 如果它不存在,所有的li都是合适的

//ul[@id='list'] 
/li[not(preceding-sibling::li[div[@class='sifExp']])] 
/h3[@class='title']/a

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM