新手 - 我正在尝试使用 lxml 在任何元素中查找“错误”(下面的示例 XML 文件,但无论标签的嵌套程度如何,它都应该可以工作):
<test>
<test1>
error
</test1>
<test2>
<test3>
error
</test3>
</test2>
</test>
到目前为止,似乎 lxml 只能搜索标签而不是标签内的数据 - 这是正确的吗?
您是在问是否有内置函数来搜索元素中的文本?lxml
使用'etree
解析器编写自己的搜索例程非常简单。例如:
测试.xml
<test>
<test1>
error
</test1>
<test2>
<test3>
error
</test3>
</test2>
</test>
并从命令行:
>>> import lxml.etree as etree
>>> for event, element in etree.iterparse("test.xml"):
... # Print the tag of a matching element
... if element.text.strip() == "error":
... print element.tag
...
test1
test3
编辑:如果您最终走这条路并且不需要使用 XML 命名空间,我建议您检查xml.etree.cElementTree
而不是lxml.etree
. 它包含在 Python 标准模块中,与lxml.etree
.