xml - 当节点不存在时,xPath前缀不起作用

标签 xml xpath

例如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">节点时,上述表达式不起作用。


为什么?
当节点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

关于xml - 当节点不存在时,xPath前缀不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37530943/

相关文章:

xml - 使用Powershell以表格形式从XML元素获取数据

python - 使用lxml和xpath读取GPX

java - 定位带有下划线的id的元素

python - 如何使用 lxml 进行不区分大小写的 Python XPath 搜索?

html - xpath 根据(相对)子内容选择父级

c# - 从 XML 中的十六进制字符串获取 JPEG 图像

java - 解析 XML 时拦截 Xstream

将 CSV 转换为 XML 文件的 Java lib 或应用程序?

java - 在 Java 中解析 XML 并忽略标签

xpath - 是否可以在xpath中使用xpath?