0

新手 - 我正在尝试使用 lxml 在任何元素中查找“错误”(下面的示例 XML 文件,但无论标签的嵌套程度如何,它都应该可以工作):

<test>
  <test1>
    error
  </test1>
  <test2>  
    <test3>
      error
    </test3>
  </test2>
</test>

到目前为止,似乎 lxml 只能搜索标签而不是标签内的数据 - 这是正确的吗?

4

1 回答 1

0

您是在问是否有内置函数来搜索元素中的文本?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.

于 2013-04-04T06:29:51.900 回答