0
以下は、Webサービスとエンドポイントからの応答として提供されます。Python:xmlを解析して、属性の値をキーとして取得し、階層の値を維持してタグの値を取得します。
<ns2:getModuleAnswersResponse xmlns:ns2="http://www.example.com/ManagerService">
<ns2:answer>
<ns2:answer key="storage">
<ns2:value key="failover">true</ns2:value>
<ns2:answer key="timeseries">
<ns2:answer key="socketconnector">
<ns2:value key="host">localhost</ns2:value>
<ns2:value key="port">2020</ns2:value>
</ns2:answer>
</ns2:answer>
</ns2:answer>
<ns2:answer key="frontendws">
<ns2:answer key="tomcat">
<ns2:value key="host">localhost</ns2:value>
<ns2:value key="protocol">http</ns2:value>
<ns2:value key="username">user</ns2:value>
<ns2:value key="password">abc</ns2:value>
</ns2:answer>
<ns2:value key="instance">WS</ns2:value>
</ns2:answer>
<ns2:answer key="topologyservice">
<ns2:value key="host">localhost</ns2:value>
<ns2:answer key="gateway2">
<ns2:value key="host">localhost</ns2:value>
<ns2:value key="port">48443</ns2:value>
<ns2:value key="authentication">certificate</ns2:value>
</ns2:answer>
</ns2:answer>
<ns2:answers key="connection">
<ns2:answer>
<ns2:answer key="primary">
<ns2:answer key="vcenter">
<ns2:value key="host">localhost</ns2:value>
<ns2:value key="username">admin</ns2:value>
<ns2:value key="password">abc</ns2:value>
</ns2:answer>
</ns2:answer>
</ns2:answer>
</ns2:answers>
<ns2:value key="use_advancedsettings">false</ns2:value>
</ns2:answer>
</ns2:getModuleAnswersResponse>
このXMLは、この形式の応答を提供するためにPythonで解析する必要があります。
{'storage':
{'failover': 'true', 'timeseries':
{'socketconnector':
{'host': 'localhost',
'port': '2020'
}
}
},
'frontendws':
{'tomcat':
{ 'host': 'localhost',
'port': '2020',
'username': 'user',
'password': 'abc'
}, 'instance': 'WS'
},
'topologyservice':
{'host': 'localhost',
'gateway2':
{'host': 'localhost',
'username': 'admin',
'password': 'abc'
}
},
'connection':
{'primary':
{'vcenter':
{'host': 'localhost',
'username': 'admin',
'password': 'abc'
}
}
},
'use_advancedsettings': 'false'
}
これはXMLを表現する古い方法です。私はPythonでlxmlの反復を使用して異なる再帰的なアプローチを試みたが、正しい結果に達することはありません。 Pythonソリューションをお探しですか?
申し訳ありませんが、名前空間の詳細を追加していません。今編集されました。 –