私が最近持っていたミニドムの質問が殺到しているのを見たことがあると思います。今週末、私はついに諦めてetreeに移動しました。簡単な質問があります。これをループして、次の形式で出力を取得するにはどうすればよいですか。
名前Class_Nameメンバーの色#fieldy#field z
XMLの例(Class_Nameにはさまざまな種類があります):
<network_objects>
<network_object>
<Name>Test_Group_A</Name>
<Class_Name>network_object_group</Class_Name>
<members>
<reference>
<Name>Host1</Name>
<Table>network_objects</Table>
</reference>
<reference>
<Name>Host2</Name>
<Table>network_objects</Table>
</reference>
<reference>
<Name>Host3</Name>
<Table>network_objects</Table>
</reference>
<reference>
<Name>Host4</Name>
<Table>network_objects</Table>
</reference>
<reference>
<Name>Host5</Name>
<Table>network_objects</Table>
</reference>
<reference>
<Name>Host6</Name>
<Table>network_objects</Table>
</reference>
<reference>
<Name>Host7</Name>
<Table>network_objects</Table>
</reference>
</members>
<color><![CDATA[deep pink]]></color>
<comments><![CDATA[no comment]]></comments>
<group_convention_query><![CDATA[]]></group_convention_query>
<group_sort_type>3</group_sort_type>
<is_convention_on>false</is_convention_on>
<member_class><![CDATA[network_object]]></member_class>
<members_query><![CDATA[]]></members_query>
<type><![CDATA[group]]></type>
</network_object>
</network_objects>
次のコードは、各名前(私が欲しいもの)の1つの反復を与えます:
for Name in tree.iterfind('network_object/Name'):
print (Name.text)
ただし、forループ内でforループを実行すると、Class_Nameのすべてのバリエーション(実際の名前とは対照的に)を含むすべての名前の出力が得られます。例えば:
for Name in tree.iterfind('network_object/Name'):
for Class_name in tree.iterfind('network_object/Class_Name'):
print (Name.text,Class_name.text)
DB_Servers host_plain
DB_Servers network_object_group
DB_Servers dynamic_object
などなど、私はあなたがアイデアを得ると確信しています。
必要なすべてのデータを収集し、関連する詳細を含む各オブジェクトを独自の行に配置するにはどうすればよいですか?
ありがとうございました!