解析python中的xml内容

时间:2016-06-13 18:02:36

标签: python xml

我想在Python中将信息从xml写入dict。 下面是xml文件:

<data>
  <files>
    <links>
      <item>
        <file_name>file1</file_name>
        <id>100</id>
      </item>
      <item>
        <file_name>file2</file_name>
        <id>200</id>
      </item>
      <item>
        <file_name>file3</file_name>
        <id>300</id>
      </item>
    </links>
  </files>
</data>

对于Python dict,如:

xml_content = { 'file1' = 100, 'file2' = 200, 'file3' = 300 }

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

使用xmltodict这个简单的代码可用于提取词典:

使用xmltodict

安装pip install xmltodict
import xmltodict

doc = xmltodict.parse("""
<data>
  <files>
    <links>
      <item>
        <file_name>file1</file_name>
        <id>100</id>
      </item>
      <item>
        <file_name>file2</file_name>
        <id>200</id>
      </item>
      <item>
        <file_name>file3</file_name>
        <id>300</id>
      </item>
    </links>
  </files>
</data>
""")

d = {}

for item in doc["data"]["files"]["links"]["item"]:
    d[item["file_name"]] = int(item["id"])

print(d)

d将是:

{u'file3': 300, u'file2': 200, u'file1': 100}

或者,您可以从以下文件加载xml:

with open('path/to/file.xml') as fd:
    doc = xmltodict.parse(fd.read())

答案 1 :(得分:0)

美丽的汤应该帮助你

链接 - https://www.crummy.com/software/BeautifulSoup/

这样的事情应该有效

from bs4 import BeautifulSoup

soup = BeautifulSoup("""
<data>
  <files>
    <links>
      <item>
        <file_name>file1</file_name>
        <id>100</id>
      </item>
      <item>
        <file_name>file2</file_name>
        <id>200</id>
      </item>
      <item>
        <file_name>file3</file_name>
        <id>300</id>
      </item>
    </links>
  </files>
</data>
""")


xml_content = { item.find('file_name').string: item.find('id').string for item in soup.find_all('item') }

输出:

{'file2': '200', 'file3': '300', 'file1': '100'}