【发布时间】:2017-03-21 09:23:57
【问题描述】:
我一直在尝试编辑包含多个同名元素内容的 XML 中的一个特定元素内容,但是设置元素属性所需的“for循环”将始终遍历整个部分并更改他们都。
假设这是我的 XML:
<SectionA>
<element_content attribute="device_1" type="parameter_1" />
<element_content attribute="device_2" type="parameter_2" />
</SectionA>
我目前正在使用带有此代码的 ElementTree,当某个部分具有不同名称的元素内容时,它可以完美地工作,但它不适用于这种情况 - 名称相同。它只会将所有内容的属性更改为具有相同的值。
for element in root.iter(section):
print element
element.set(attribute, attribute_value)
如何访问特定元素内容并只更改该内容?
请记住,我不知道 element_content 部分中当前存在的属性,因为我正在将它们动态添加到用户的请求中。
编辑: 感谢@leovp,我能够解决我的问题并提出了这个解决方案:
for step in root.findall(section):
last_element = step.find(element_content+'[last()]')
last_element.set(attribute, attribute_value)
这会导致 for 循环始终更改特定嵌套中的最后一个属性。 由于我是动态添加和编辑行,这使它改变了我添加的最后一个。
谢谢。
【问题讨论】:
标签: python xml python-2.7 elementtree