从XML到Python lis的数据

2024-03-28 09:05:30 发布

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

是否可以用python将XML文件中的数据存储到列表中。例如,我有一个包含以下内容的XML文件:

<brochure>
<onlinePath>http://EEE</onlinePath>
<downloadPath>http://YYY</downloadPath>
<Name>ABC</Name>
<AAA>
    <P>JPG</P>
        <Q>JPG</Q>
</AAA>
</brochure>
<brochure>
<onlinePath>http://EKK</onlinePath>
<downloadPath>http://XXX</downloadPath>
<Name>DEF</Name>
<AAA>
    <P>JPG</P>
        <Q>JPG</Q>
</AAA>
</brochure>

是否可以存储到python列表中,如:

onlinePath = ("http://EEE", "http://EKK")
Name = ("ABC", "DEF")

Tags: 文件数据namehttp列表defxmljpg
3条回答

休的解决办法很好。下面是一个使用ElementTree的变体(使用Python 2.6测试):

from xml.etree import ElementTree

tree = ElementTree.parse("yourfile.xml")   
olp = tree.findall("//onlinePath")
mylist = [t.text for t in olp]

是的,这是非常可能的。有两个库可以帮助您完成这项工作,分别是ElementTreelxml。看看他们。

import lxml

xml = """
<brochures>
    <brochure>
        <onlinePath>http://EEE</onlinePath>
        <downloadPath>http://YYY</downloadPath>
        <Name>ABC</Name>
        <AAA>
            <P>JPG</P>
            <Q>JPG</Q>
        </AAA>
    </brochure>
    <brochure>
        <onlinePath>http://EKK</onlinePath>
        <downloadPath>http://XXX</downloadPath>
        <Name>DEF</Name>
        <AAA>
            <P>JPG</P>
            <Q>JPG</Q>
        </AAA>
    </brochure>
</brochures>
"""

root = lxml.etree.fromstring(xml)
mylist = root.xpath('//brochure/onlinePath/text()')

结果

['http://EEE', 'http://EKK']

注:

  1. 我将您的xml包装在<;小册子>;<;小册子>;中,使其成为树而不是林(即单个根节点);

  2. 如果要从文件而不是字符串中读取,请使用lxml.etree.parse()而不是lxml.etree.from string()

相关问题 更多 >