gpt4 book ai didi

python - XPath:选择具有空值的标记

转载 作者:太空狗 更新时间:2023-10-29 20:17:25 25 4
gpt4 key购买 nike

如何在 XPath 1.0 中找到所有 col name="POW" 为空的行?

<row>
<col name="WOJ">02</col>
<col name="POW"/>
<col name="GMI"/>
<col name="RODZ"/>
<col name="NAZWA">DOLNOŚLĄSKIE</col>
<col name="NAZDOD">województwo</col>
<col name="STAN_NA">2011-01-01</col>
</row>

我尝试了很多解决方案。在 Firefox 扩展 XPath Checker 中有几次选择是正确的,但 lxml.xpath() 表示表达式无效或不返回任何行。

我的 Python 代码:

from lxml import html
f = open('TERC.xml', 'r')
page = html.fromstring(f.read())
for r in page.xpath("//row[col[@name = 'POW' and not(text())]]"):
print r.text_content()
print "-------------------------"

最佳答案

How I can find in XPath 1.0 all rows with empty col name="POW"?

“空”有多种可能的定义,对于每一种定义,都有不同的 XPath 表达式选择“空”元素。

空元素的合理定义是:没有子元素和文本节点子元素的元素,或者只有一个文本节点子元素的元素,其字符串值仅包含空白字符。

这个 XPath 表达式:

//row[col[@name = 'POW']
[not(*)]
[not(normalize-space())]
]

选择 XML 文档中的所有 row 元素,这些元素有一个 col 子元素,有一个属性 name 和字符串值 “POW”,没有子元素,其字符串值完全由空白字符组成,或者是空字符串。

如果“空”理解为“根本没有子节点”,这意味着没有子元素,没有子 PI 节点,也没有子评论节点,那么使用:

//row[col[@name = 'POW']
[not(node())]
]

关于python - XPath:选择具有空值的标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8688185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com