pbm*_*pbm 9 python xml xpath lxml
我如何在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>
Run Code Online (Sandbox Code Playgroud)
我试过很多解决方案.在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 "-------------------------"
Run Code Online (Sandbox Code Playgroud)
我如何在XPath 1.0中找到所有空行
col name="POW"?
有许多可能的"空"定义,并且对于它们中的每一个,都有一个不同的XPath表达式选择"空"元素.
空元素的合理定义是:没有子元素且没有文本节点子元素的元素,或者具有单个文本节点子元素的元素,其字符串值仅包含空格字符.
这个XPath表达式:
//row[col[@name = 'POW']
[not(*)]
[not(normalize-space())]
]
Run Code Online (Sandbox Code Playgroud)
选择rowXML文档中具有col子元素的所有元素,该元素name具有字符串值"POW"且没有子元素的属性- 元素且其字符串值完全由空格字符组成,或者为空字符串.
在"空"的情况下,您理解"根本没有孩子",这意味着没有子元素,没有子节点PI节点和子节点注释节点,则使用:
//row[col[@name = 'POW']
[not(node())]
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12546 次 |
| 最近记录: |