使用 python 元素树或 Minidom 进行嵌套 XML 解析
Nested XML parsing using python Element Tree or Minidom
我正在努力获取使用 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)
你的问题出在这一行:
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'}
我正在努力获取使用 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)
你的问题出在这一行:
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'}