1

以下のコンテンツでxmlを解析しようとしています

<File version="5.6">
<Parent name="A">
<Child name="a"/>
<Child name="b"/>
</Parent>

<Parent name="B">
<Child name="c"/>
<Child name="d"/>
</Parent>

<Parent name="C">
<Child name="e"/>
<Child name="f"/>
</Parent>

</File>

そして、私は次のコードを使用しました

for child in tree.getroot().findall('./Parent/Child')
     print child.attrib.get("name")

親の名前なしで子供の名前をすべて出力するだけです。このように各子供の関連する親の名前を印刷できますか?

A has a b
B has c d
C has e f
4

1 に答える 1

2

親を反復処理してから、親の子を見つけます。

for parent in tree.findall('./Parent'):
    children = [child for child in parent.findall('./Child')]
    print '{} has {}'.format(parent.get('name'), ' '.join(c.get('name') for c in children))

コメントへの返信

lxml を使用すると、getparent()メソッドで親ノードにアクセスできます。

import lxml.etree
tree = lxml.etree.parse('1.xml')
for child in tree.findall('./Parent/Child'):
    print '{} has {}'.format(child.getparent().get('name'), child.get('name'))
于 2013-08-14T09:37:01.780 に答える