python从xm中提取项

2024-09-26 04:50:26 发布

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

我想在python中读取一个xml文件,如下所示:

<xml>
    <project name = "proj1">
        <design name = "des1">
            <param>para1</param>
        </design>
        <design name = "des2">
            <param>para4</param>
        </design>
    </project>
    <project name = "proj2">
        <design name = "des2">
            <param>para2</param>
        </design>
    </project><project name = "proj3">
        <design name = "des3">
            <param>para3</param>
        </design>
    </project>
</xml>

我想用xml.etree.ElementTree文件你知道吗

我可以阅读所有这样的项目

    tree = ET.parse(path)
    root = tree.getroot()

    for child in root:
        print child.get("name")

但是我如何得到一个特定的项目,比如proj1中des2中的param?你知道吗


Tags: 文件项目nameprojectchildtreeparamroot
2条回答

就我个人而言,我会使用lxml而不是原生python ETree代码。这样就可以使用XPath,这使得操作xml变得更加容易。你知道吗

例如,获取您请求的元素的代码是:

param = root.xpath(/project[@name="proj1"]/design[@name="des2"]/param/Text()')

更新:看起来ETree支持完整XPath的一个子集,因此它可以满足@mgibsonbr指出的需求

阅读the docs获取etree的列表(带示例),其中列出了遍历DOM和检索数据所能做的一切。如果您对xpath不熟悉,您可能还想阅读它(即使这个模块does not fully support it,您也可以使用它的子集轻松地检索一些元素)。对于您的具体示例,它将是:

root.find('project[@name="proj1"]/design[@name="des2"]/param').text

相关问题 更多 >