Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用pythonmidom解析xml_Python_Xml - Fatal编程技术网

用pythonmidom解析xml

用pythonmidom解析xml,python,xml,Python,Xml,我试图用PythonMinidom库解析.xml文件中的元素,但它似乎不起作用。它返回“索引器列表超出范围”。也许我使用的方法/库不正确。请建议如何做到这一点。谢谢 from xml.dom import minidom doc = minidom.parse('/path/to/file/runParameters.xml') docs = doc.getElementsByTagName('RunParameters') for el in docs: cloud = el.getE

我试图用PythonMinidom库解析.xml文件中的元素,但它似乎不起作用。它返回“索引器列表超出范围”。也许我使用的方法/库不正确。请建议如何做到这一点。谢谢

from xml.dom import minidom
doc = 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>

假的
米塞克
真的
000000000-AG01C
17772
2016-04-10T00:00:00

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

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)

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

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)
使用

使用


您的代码+xml适合我。xml文件名是否正确?是的,拼写正确并返回:
print(cloud[0].firstChild.nodeValue)indexer错误:列表索引超出范围
我用测试代码添加了答案。请试一试。你的代码+xml适合我。xml文件名是否正确?是的,拼写正确并返回:
print(cloud[0].firstChild.nodeValue)indexer错误:列表索引超出范围
我用测试代码添加了答案。请试一试。
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