كيف أقوم بإنشاء XML جديد من ElementTree؟
-
22-09-2019 - |
سؤال
قليلا من سؤال المبتدئين هنا:
قل لدي كتلة من XML:
<root>
<district>
<house><room><door/><room></house>
</district>
<district>
<street>
<house>and so on</house>
</street>
إلخ.
مع Elementtree يمكنني القيام به:
houses=doc.findall(".//house")
لاختيار جميع العقد المنزلية ، بغض النظر عن والديهم. ما أريد القيام به الآن هو تحويل كل من العقد المنزلية إلى كائن شجرة منفصل.
جزء من سبب ذلك هو أنني أريد بعد ذلك اكتشاف اكتشاف آخر:
door=houseXml.findall(".//door")
يمكنني أن أفعل شيئًا مثل:
for _house in houses:
houseXml=_house.getiterator
لكن هذا لا يبدو أنه يفعل ما أريد.
هل أنا على خطأ؟
المحلول
تستطيع الاتصال findall
على العناصر التي تم إرجاعها من قبل الأول findall
:
>>> doc = """<root>
... <district>
... <house><room><door/></room></house>
... </district>
... <district>
... <street>
... <house>and so on</house>
... </street>
... </district>
... </root>"""
>>>
>>> from xml.etree import cElementTree as ET
>>>
>>> r = ET.XML(doc)
>>>
>>> for house in r.findall('.//house'):
... print house, house.findall('.//door')
...
<Element 'house' at 0xb7f3ea70> [<Element 'door' at 0xb7f3eab8>]
<Element 'house' at 0xb7f3eb00> []
>>>
لا تنتمي إلى StackOverflow