在Python中用ElementTree解析XML

2024-09-30 16:32:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样的XML:

<parameter>
 <name>ec_num</name>
 <value>none</value>
 <units/>
 <url/>
 <id>2455</id>
 <m_date>2008-11-29 13:15:14</m_date>
 <user_id>24</user_id>
 <user_name>registry</user_name>
</parameter>
<parameter>
 <name>swisspro</name>
 <value>Q8H6N2</value>
 <units/>

我想解析XML并提取<value>条目,它正好位于标记为'swisspro'的<name>项之下。一、 我想解析并提取'Q8H6N2'值。在

我如何使用ElementTree来实现这一点?在


Tags: namenoneidurldateparametervaluexml
2条回答

通过lxml可以容易得多,但是这里有一个使用ElementTree库的解决方案:

import xml.etree.ElementTree as ET

data = """<parameters>
<parameter>
 <name>ec_num</name>
 <value>none</value>
 <units/>
 <url/>
 <id>2455</id>
 <m_date>2008-11-29 13:15:14</m_date>
 <user_id>24</user_id>
 <user_name>registry</user_name>
</parameter>
<parameter>
 <name>swisspro</name>
 <value>Q8H6N2</value>
 <units/>
</parameter>
</parameters>"""

tree = ET.fromstring(data)

for parameter in tree.iter(tag='parameter'):
    name = parameter.find('name')
    if name is not None and name.text == 'swisspro':
        print parameter.find('value').text
        break

印刷品:

^{pr2}$

其思想非常简单:迭代所有parameter标记,检查name标记的值,如果它等于swisspro,则得到value元素。在

希望有帮助。在

下面是一个例子: xml文件

<span style="font-size:13px;"><?xml version="1.0" encoding="utf-8"?>
<root>
 <person age="18">
    <name>hzj</name>
    <sex>man</sex>
 </person>
 <person age="19" des="hello">
    <name>kiki</name>
    <sex>female</sex>
 </person>
</root></span>

解析方法

^{pr2}$

相关问题 更多 >