亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 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條經驗 獲得超16個贊

這段代碼對我有用。請在您的系統上嘗試:


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 關注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號