如何解析下面的XML以查找每个GUIDE,它的ID和UL,然后为GUIDE中的每个PAGE,页面ID以及BOXES / BOX / ASSETS / DESCRIPTION中显示的任何图像?图像是HTML格式的,所以我需要从每个图像中获取源。
<guide>
<id></id>
<url></url>
<group>
<id></id>
<type></type>
<name></name>
</group>
<pages>
<page>
<id></id>
<name></name>
<description></description>
<boxes>
<box>
<id></id>
<name></name>
<type></type>
<map_id></map_id>
<column></column>
<position></position>
<hidden></hidden>
<created></created>
<updated></updated>
<assets>
<asset>
<id></id>
<name></name>
<type></type>
<description></description>
<url/>
<owner>
<id></id>
<email></email>
<first_name></first_name>
<last_name></last_name>
</owner>
</asset>
</assets>
</box>
</boxes>
</page>
</pages>
</guide>
这为我提供了他们的ID和说明页面,但它是我需要访问的资产元素内的描述,以及它们所在的指南/页面。
from lxml import etree
tree = etree.parse('temp.xml')
for page in tree.xpath('.//page'):
page.xpath('id')[0].text, page.xpath('description')[0].text
答案 0 :(得分:1)
代码的模式可能类似,但我无法检查,因为我没有你的完整xml。
>>> from lxml import etree
>>> tree = etree.parse('temp.xml')
>>> for guide in tree.xpath('guide'):
... '---', guide.xpath('id')[0].text
... for pages in guide.xpath('.//pages'):
... for page in pages:
... '------', page.xpath('id')[0].text
... for description in page.xpath('.//asset/description'):
... '---------', description.text
...
('---', 'guide 1')
('------', 'page 1')
('---------', 'description')
我认为你的xml会有多个guide
个元素。这就是我解析的内容。
<guides>
<guide>
<id>guide 1</id>
<url></url>
<group>
<id></id>
<type></type>
<name></name>
</group>
<pages>
<page>
<id>page 1</id>
<name></name>
<description></description>
<boxes>
<box>
<id></id>
<name></name>
<type></type>
<map_id></map_id>
<column></column>
<position></position>
<hidden></hidden>
<created></created>
<updated></updated>
<assets>
<asset>
<id></id>
<name></name>
<type></type>
<description>description</description>
<url/>
<owner>
<id></id>
<email></email>
<first_name></first_name>
<last_name></last_name>
</owner>
</asset>
</assets>
</box>
</boxes>
</page>
</pages>
</guide>
</guides>
我通过缩进xml让我自己的生活更轻松,这样我就可以辨别出它的结构。