【问题标题】:how to read config file in xml formate using python如何使用python读取xml格式的配置文件
【发布时间】:2018-05-22 05:42:41
【问题描述】:

如何从 XML 格式的配置文件中读取值如下所示。这里的标签 name1,name2 会像 name4,name5...

<config> 
    <name>
        <name1>xxxxxxxxx</name1>
        <name2>yyyyyyyyy</name2>
        <name3>zzzzzzzzz</name3>
    </name>
    <company>
        <loc1>1234</loc1> 
        <loc2>1242</loc2> 
        <loc3>1212</loc3> 
    </company>
</config>

【问题讨论】:

  • 到目前为止你尝试过什么? ElementTreelxml 非常适合这项任务。

标签: python xml python-3.x parsing configuration-files


【解决方案1】:

我觉得这样更好。

import xml.dom.minidom as minidom
dic={}
dom = minidom.parse("filename")
root = dom.documentElement                        #take name1 as example
dic['name1']=root.getElementsByTagName('name1')[0].firstChild.data

【讨论】:

    【解决方案2】:

    可以使用标准库xml包解析xml文档。

    例如:

    In [91]: import xml.etree.ElementTree as ET
    
    In [92]: data = """
        ...: <config>
        ...:   <name>
        ...:   <name1>xxxxxxxxx</name1>
        ...:   <name2>yyyyyyyyy</name2>
        ...:   <name3>zzzzzzzzz</name3>
        ...: </name>
        ...: <company>
        ...: <loc1>1234</loc1>
        ...: <loc2>1242</loc2>
        ...: <loc3>1212</loc3>
        ...: </company>
        ...: </config>
        ...: """
    
    In [93]:
    
    In [93]: x = ET.fromstring(data)
    
    In [94]: [each.text for each in x.find('.//name')]
    Out[94]: ['xxxxxxxxx', 'yyyyyyyyy', 'zzzzzzzzz']
    

    或者如果你想要一本字典:

    In [95]: {each.tag:each.text for each in x.find('.//name')}
    Out[95]: {'name1': 'xxxxxxxxx', 'name2': 'yyyyyyyyy', 'name3': 'zzzzzzzzz'}
    

    【讨论】:

      猜你喜欢
      • 2013-10-23
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多