gpt4 book ai didi

python - 根据其属性查找 xml 元素并更改其值

转载 作者:太空狗 更新时间:2023-10-29 20:44:13 27 4
gpt4 key购买 nike

我正在使用 python xmlElementTree 并希望根据其属性分配或修改 xml 元素值。有人可以告诉我如何执行此操作吗?

例如:这是一个xml文件,我需要根据属性“sys/phoneNumber/1”、“sys2/SMSnumber/1”等设置元素“number”的值。

<root>
<phoneNumbers>
<number topic="sys/phoneNumber/1" update="none" />
<number topic="sys/phoneNumber/2" update="none" />
<number topic="sys/phoneNumber/3" update="none" />
</phoneNumbers>

<gfenSMSnumbers>
<number topic="sys2/SMSnumber/1" update="none" />
<number topic="sys2/SMSnumber/2" update="none" />
</gfenSMSnumbers>
</root>

编辑:为 XML 文件中的标签根添加闭包。

最佳答案

您可以这样访问属性值:

from elementtree.ElementTree import XML, SubElement, Element, tostring

text = """
<root>
<phoneNumbers>
<number topic="sys/phoneNumber/1" update="none" />
<number topic="sys/phoneNumber/2" update="none" />
<number topic="sys/phoneNumber/3" update="none" />
</phoneNumbers>

<gfenSMSnumbers>
<number topic="sys2/SMSnumber/1" update="none" />
<number topic="sys2/SMSnumber/2" update="none" />
</gfenSMSnumbers>
</root>
"""

elem = XML(text)
for node in elem.find('phoneNumbers'):
print node.attrib['topic']
# Create sub elements
if node.attrib['topic']=="sys/phoneNumber/1":
tag = SubElement(node,'TagName')
tag.attrib['attr'] = 'AttribValue'

print tostring(elem)

忘了说,如果你的ElementTree版本大于1.3,你可以使用XPath:

elem.find('.//number[@topic="sys/phoneNumber/1"]')

http://effbot.org/zone/element-xpath.htm

或者你可以使用这个简单的:

for node in elem.findall('.//number'):
if node.attrib['topic']=="sys/phoneNumber/1":
tag = SubElement(node,'TagName')
tag.attrib['attr'] = 'AttribValue'

关于python - 根据其属性查找 xml 元素并更改其值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9797274/

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