使用python在xml文件中的元素下设置或获取某些内容

2024-10-03 23:28:55 发布

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

我有如下所示的xml文件,我可以用下面的脚本更改任何特定元素country的值(根.iter). 如何修改特定countryneighbor值(例如第一个或第二个值)?你知道吗

<data>
    <country name="vers1" value="1"> (can change its value with below script)
     <neighbor name="test" value="E"/> (how to change its value?????)
    </country>
    <country name="vers2" value="2">
     <neighbor name="test" value="N"/>
    </country>
    <country name="vers3" value="3">
     <neighbor name="test" value="W"/>
    </country>
</data>

代码

import xml.etree.ElementTree as ET

tree = ET.parse('test.xml')
root = tree.getroot()
for version in root.iter('country'):
    name=version.get('name')
    if name == "vers1":
        version.set('value', 10)
        tree.write('test.xml')

Tags: nametesttreedatavalueversionrootxml
1条回答
网友
1楼 · 发布于 2024-10-03 23:28:55

使用xpath从xml获取目标标记:

演示:

#Change value of neighbor for  vers2 country , 
import xml.etree.ElementTree as ET

#tree = ET.parse('test.xml')
root = ET.fromstring(data)
neighbors = root.findall("country[@name='vers2']/neighbor[@name='test']")
for i in neighbors:
    i.attrib["value"] = "changed"

print "Output:", ET.tostring(root)    

输出

Output: <data>
    <country name="vers1" value="1"> (can change its value with below script)
     <neighbor name="test" value="E" /> (how to change its value?????)
    </country>
    <country name="vers2" value="2">
     <neighbor name="test" value="changed" />
    </country>
    <country name="vers3" value="3">
     <neighbor name="test" value="W" />
    </country>
</data>

相关问题 更多 >