【问题标题】:Python Minidom XML QueryPython Minidom XML 查询
【发布时间】:2012-10-10 09:00:28
【问题描述】:

我正在尝试使用 lxml 查询这个 XML:

<lista_tareas>
    <tarea id="1" realizzato="False" data_limite="12/10/2012" priorita="1">
    <description>XML TEST</description>
</tarea>
<tarea id="2" realizzato="False" data_limite="12/10/2012" priorita="1">
    <description>XML TEST2</description>
</tarea>

我写了这段代码:

from lxml import etree
doc = etree.parse(file_path)    

root = etree.Element("lista_tareas")

for x in root:
    z = x.Element("tarea")
    for y in z:
        element_text = y.Element("description").text
        print element_text

它不打印任何东西,你能建议我怎么做吗?

【问题讨论】:

    标签: python xml minidom


    【解决方案1】:

    你不想使用 minidom;请改用ElementTree API。 DOM API 是一个非常冗长且受限制的 API,而 ElementTree API 则发挥了 Python 的优势。

    MiniDOM 模块不提供您正在寻找的任何查询 API。

    您可以使用捆绑的xml.etree.ElementTree 模块,也可以安装lxml,它提供了更强大的XPath 和其他查询选项。

    import xml.etree.ElementTree as ET
    root = ET.parse('document.xml').getroot()
    
    for c in root.findall("./Root_Node[@id='1']/sub_node"):
        # Do something with c
    

    【讨论】:

      【解决方案2】:

      使用lxml

      from lxml import etree
      
      doc = etree.parse ( source )    
      for c in doc.xpath ( "//Root_Node[@id='1']" ):
        subnode = c.find ( "sub_node" )
        # ... etc ...
      

      【讨论】:

      • 非常感谢!它似乎很容易使用。现在我测试一下!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-14
      • 2015-05-31
      • 1970-01-01
      • 1970-01-01
      • 2012-11-15
      • 2017-09-22
      • 2018-10-23
      相关资源
      最近更新 更多