使用python Element Tree或Minidom进行嵌套的XML解析

时间:2018-06-12 23:33:15

标签: python xml parsing elementtree minidom

我正在努力使用python解析xml文件,因为它有一个嵌套结构。

我的XML文件如下所示

<uses-permission android:name="android.permission.USE_FINGERPRINT" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name="menu.Activities.MainMenuActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar" />
    <activity
        android:name="menu.Activities.LoginActivity2"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="menu.Activities.validateInfoActivity"
        android:label="Confirmar información" />

    <service
        android:name="services.notificationService"
        android:enabled="true"
        android:exported="true"></service>

    <provider android:name="DataBase.businessCore"
        android:authorities="com.mercasavip.business.core" android:exported="true"/>
</application>

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

Key&amp;值。例如。 (键应该得到值“objectID”&amp; value应该得到“ARRAY.R800.20454”等等循环中的所有剩余项目。“StorageArray”中有超过50个项目因此我截断了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>

我的代码:

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

1 个答案:

答案 0 :(得分:0)

你的问题在于这一行:

    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'}