【问题标题】:How to read xml file using python? [duplicate]如何使用python读取xml文件? [复制]
【发布时间】:2019-08-05 03:34:51
【问题描述】:

我有一个这样的 xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<Automation_Config>
    <Path>
        <Log>.\SERVER.log</Log>
        <Flag_Path>.\Flag</Flag_Path>
        <files>.\PO</files>
    </Path>

</Automation_Config>

我想读取 xml 文件并获取其中的元素,然后分配给变量。

我试过了,但我无法获取 Log 的元素。

import xml.dom.minidom
def main ():
    Load_XML = xml.dom.minidom.parse('D:/Config.xml')
    print (Load_XML.nodeName)
    print (Load_XML.firstChild.tagName)

    Log = Load_XML.getElementsByTagName ("Log")
    print (Log)

main()

【问题讨论】:

  • 我强烈建议反对使用xml.dom.minidom。除非您非常需要使用非常简单和基本的 W3C DOM API,否则您希望改用xml.etree.ElementTree API。 DOM API 旨在作为许多编程语言之间的最小共同点,其中许多编程语言的表达能力不如 Python。因此,工作起来非常、非常、非常乏味。
  • 使用ElementTree API,获取第一个Log 元素的字符串内容就像tree = ET.parse(filename) 然后value = tree.find(".//Log").text 一样简单。

标签: python xml minidom


【解决方案1】:

使用ElementTree:

import xml.etree.ElementTree as ET
tree = ET.parse('Config.xml')
root = tree.getroot()
print(root.findall('.//Log'))

输出:

pawel@pawel-XPS-15-9570:~/test$ python parse_xml.py 
[<Element 'Log' at 0x7fb3f2eee9f

【讨论】:

    【解决方案2】:

    下面:

    import xml.etree.ElementTree as ET
    xml = '''<?xml version="1.0" encoding="UTF-8"?>
    <Automation_Config>
        <Path>
            <Log>.\SERVER.log</Log>
            <Flag_Path>.\Flag</Flag_Path>
            <files>.\PO</files>
        </Path>
    
    </Automation_Config>'''
    
    root = ET.fromstring(xml)
    for idx,log_element in enumerate(root.findall('.//Log')):
      print('{}) Log value: {}'.format(idx,log_element.text))
    

    输出

    0) Log value: .\SERVER.log
    

    【讨论】:

      猜你喜欢
      • 2022-07-07
      • 2019-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-13
      • 2021-04-08
      相关资源
      最近更新 更多