为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Python minidom 解析 xml

使用 Python minidom 解析 xml

拉丁的传说 2023-06-13 14:55:42
我正在尝试使用 Python minidom 库解析 .xml 文件中的元素,但它似乎不起作用。它返回“IndexError 列表超出范围”。也许我在工作中使用了不正确的方法/库。请建议如何做到这一点。谢谢from xml.dom import minidomdoc = minidom.parse('/path/to/file/runParameters.xml')docs = doc.getElementsByTagName('RunParameters')for el in docs:    cloud = el.getElementsByTagName("EnableCloud")    print(cloud[0].firstChild.nodeValue)这是文件的结构<?xml version="1.0"?><RunParameters xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  <EnableCloud>false</EnableCloud>  <RunParametersVersion>MiSeq</RunParametersVersion>  <CopyManifests>true</CopyManifests>  <FlowcellRFIDTag>    <SerialNumber>000000000-AG01C</SerialNumber>    <PartNumber>17772</PartNumber>    <ExpirationDate>2016-04-10T00:00:00</ExpirationDate>  </FlowcellRFIDTag></RunParameters>
查看完整描述

2 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

使用元素树

import xml.etree.ElementTree as ET



xml = '''<?xml version="1.0"?>

<RunParameters xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <EnableCloud>false</EnableCloud>

  <RunParametersVersion>MiSeq</RunParametersVersion>

  <CopyManifests>true</CopyManifests>

  <FlowcellRFIDTag>

    <SerialNumber>000000000-AG01C</SerialNumber>

    <PartNumber>17772</PartNumber>

    <ExpirationDate>2016-04-10T00:00:00</ExpirationDate>

  </FlowcellRFIDTag>

</RunParameters>'''


root = ET.fromstring(xml)

print(root.find('.//EnableCloud').text)

输出


false


查看完整回答
反对 回复 2023-06-13
?
侃侃尔雅

TA贡献1801条经验 获得超15个赞

这段代码对我有用。请在您的系统上尝试:


xx = '''

<?xml version="1.0"?>

<RunParameters xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <EnableCloud>false</EnableCloud>

  <RunParametersVersion>MiSeq</RunParametersVersion>

  <CopyManifests>true</CopyManifests>

  <FlowcellRFIDTag>

    <SerialNumber>000000000-AG01C</SerialNumber>

    <PartNumber>17772</PartNumber>

    <ExpirationDate>2016-04-10T00:00:00</ExpirationDate>

  </FlowcellRFIDTag>

</RunParameters>

'''.strip()


with open('test2.xml','w') as f:

   f.write(xx)

   

from xml.dom import minidom

doc = minidom.parse('test2.xml')

docs = doc.getElementsByTagName('RunParameters')

for el in docs:

    cloud = el.getElementsByTagName("EnableCloud")

    print(cloud[0].firstChild.nodeValue)

输出


false


查看完整回答
反对 回复 2023-06-13
  • 2 回答
  • 0 关注
  • 79 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信