如何忽略xml文件中的特定标记?

2024-04-20 09:10:02 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的xml文件中的某个时刻,我的contributor

<revision>
      <id>1</id>
      <timestamp>2012-10-25T15:50:18Z</timestamp>
      <contributor>
        <ip>127.0.0.1</ip>
      </contributor>
</revision>

在我的xml文件的另一点上,有contributor

^{pr2}$

我编写了一个python脚本,它将解析xml文件并将所需的任何标记返回到输出文件中。但是在我的贡献者下面,我有两个不同的东西Ip和username id,我想忽略Ip,只想把username和id写到我的输出文件中。如果两者都有,我会得到一个密钥错误,比如KeyError:'username'

这是我的密码

import xmltodict
with open('path to xml file') as xml_file:
  dic_xml = xmltodict.parse(xml_file.read())
  page = dic_xml['mediawiki']['page']
  data = list()
  for rev in page['revision']:
      my_string = ""
      my_string += " " + "username:" + dict(rev['contributor'])['username']
      my_string += " " + "userid:" + dict(rev['contributor'])['id']
      my_string += "\n"
      data.append(my_string)

with open('output', 'w') as writingFile:
    for i in data:
        writingFile.write(i)

Tags: 文件ipiddatastringmypageusername
1条回答
网友
1楼 · 发布于 2024-04-20 09:10:02

只需使用内置的Python xml element tree module,特别是它的带有tag和text属性的dom对象,您可以通过标记名对其进行条件设置:

第一个参与者类型:

import xml.etree.ElementTree as etree

xmlfile = '''\
<revision>
      <id>1</id>
      <timestamp>2012-10-25T15:50:18Z</timestamp>
      <contributor>
        <ip>127.0.0.1</ip>
      </contributor>
</revision>'''

dom = etree.fromstring(xmlfile)
data = dom.findall('contributor/*')

with open('output', 'w') as writingFile:
    for items in data:
        if items.tag != 'ip':
            writingFile.write(items.tag + ': ' + items.text + '\n')
# <NOTHING>

第二种贡献者类型:

^{pr2}$

相关问题 更多 >