gpt4 book ai didi

python - 使用 Python ElementTree 在 XML 中查找和编辑子元素

转载 作者:行者123 更新时间:2023-12-04 03:44:52 26 4
gpt4 key购买 nike

因为我正在处理的 XML 文件具有不一致的子元素,所以我很难找到和编辑一个特定的子元素,该子元素直到文件的更下方才出现在元素系列中。我正在使用 Python 2.7.1 中包含的 Python 的 ElementTree。

这是我正在处理的 XML 文件类型的示例:

<?xml vin="1.0" encoding="UTF-8" standalone="yes"?>

<whatever id='Subaru' YouCanDriveMyCar='Wednesday' transmission='stick'>
<model id='Ford' year='1972'>A</model>
<model id='Chevrolet' vin="1234567890" stereo='Alpine' airconditioning='notworking'>Volt</model>
<model id='Dodge' vin="3456789012" airconditioning='working'>Durango</model>
<model id='Mercedes' vin="4567890123" airconditioning='none'>S150</model>
<model id='BMW'>M350</model>
<model id='Volkswagen' vin="5678901234" stereo='Sony'>Beetle</model>
<model id='Honda' vin="6789012345" airconditioning="blowsicecubes">Accord</model>
</whatever>

在此示例中,我想找到型号 id='Volkswagen' 并将 stereo='Sony' 更改为 'Blaupunkt'。

如果我使用 ElementTree 搜索属性“stereo”,它会出错,因为“stereo”不包含在文件顶部的元素中。

如有任何帮助或提示,我们将不胜感激。

最佳答案

使用简单的 XPath 表达式找到正确的模型:

volkswagen = tree.find('.//model[@id="Volkswagen"]')

然后简单地调整stereo属性:

volkswagen.set('stereo', 'Blaupunkt')

您还可以搜索具有 stereo 属性的 model 元素:

models_with_stereos = tree.findall('.//model[@stereo]')

然后进一步过滤这些元素。

如果您切换到使用 lxml (ElementTree API 的替代实现)您仍然可以使用更复杂的 XPath 表达式,包括仅匹配 model 元素与 id="Volkswagen"stereo 属性。

关于python - 使用 Python ElementTree 在 XML 中查找和编辑子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15188828/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com