【问题标题】:Nested XML parsing using python Element Tree or Minidom使用 python Element Tree 或 Minidom 进行嵌套 XML 解析
【发布时间】:2018-11-22 10:40:35
【问题描述】:

我正在努力获取使用 python 解析的 xml 文件,因为它具有嵌套结构。

我的 XML 文件如下所示

<?xml version="1.0" encoding="UTF-8"?>
<DvMCLIResult version="8.6.0-00">
<CommandResult command="GetStorageArray">
<StorageArray objectID="ARRAY.R800.20454" name="POD1_SU73CYBSVSPF01" 
description="VSP G1500 (20454) at 10.181.35.238" serialNumber="20454" 
arrayFamily="R800" arrayType="R800" ...output truncated as I have similar 50 
values...... />
</CommandResult>
</DvMCLIResult>

我希望在两个变量中获取“StorageArray”的信息,例如

键和值。例如。 (对于循环中的所有剩余项目,键应该得到值“objectID”,值应该得到“ARRAY.R800.20454”等等。“StorageArray”中有超过 50 个项目,因此我截断了 XML 文件。

我会打印出如下的值

Key,Value
objectID,ARRAY.R800.20454
name,POD1_SU73CYBSVSPF01
description,VSP G1500 (20454) at 10.181.35.238
serialNumber,20454
arrayFamily,R800
arrayType,R800 and so on

我的代码:

def  Parse_GetStorageArray():
# Parse the XML to the text file as "Component" "Identifier" "Status"    
#"Result" format
    xmlfile = HiCommandCLI_XML_Path+'/GetStorageArray.xml'
    with open(xmlfile, 'rt') as f:
      tree = ElementTree.parse(f)

      for element in tree.getiterator('StorageArray'):
          items=element.getchildren()
          for content in items:
              print (content.tag)

【问题讨论】:

  • 文档 (docs.python.org/3/library/xml.etree.elementtree.html) 中的示例与您在此处获得的任何答案一样好或更好。试一试,然后返回您的代码和您遇到的具体问题。
  • 我不是这方面的专家。我的代码粘贴在上面,但没有打印任何内容

标签: python xml parsing elementtree minidom


【解决方案1】:

你的问题在于这一行:

    items=element.getchildren()

StorageArray 元素没有任何子元素;它只有属性。

你应该改用这个:

    items = element.attrib

items 将是一个字典,然后您可以对其进行迭代...

{'objectID': 'ARRAY.R800.20454', 
'name': 'POD1_SU73CYBSVSPF01',
'description': 'VSP G1500 (20454) at 10.181.35.238', 
'serialNumber': '20454',
'arrayFamily': 'R800', 
'arrayType': 'R800'}

【讨论】:

  • 谢谢!有道理。欣赏它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-31
  • 1970-01-01
  • 2017-09-22
相关资源
最近更新 更多