我正在关注有关如何修改现有 xml 文件以在记录子项中添加子子项值的官方文档。
原始xml文件:
<Values version="2.0">
<value name="system_type">osx</value>
<record name="service">
<value name="threads">1</value>
</record>
</Values>
当前代码:
from xml.etree import ElementTree as ET
tree = ET.parse('data.xml')
values = tree.getroot()
list_languages = values.getchildren()
processing = ET.Element('value')
processing.attrib['name'] = 'cpu_use_limit'
processing.text = '20'
values.append(processing)
tree.write('output.xml')
电流输出:
<Values version="2.0">
<value name="system_type">osx</value>
<record name="service">
<value name="threads">1</value>
</record>
<value name="cpu_use_limit">20</value>
</Values>
所需的 xml 文件:
<Values version="2.0">
<value name="system_type">osx</value>
<record name="service">
<value name="threads">1</value>
<value name="cpu_use_limit">20</value>
</record>
</Values>
我想从一个评论开始:输入XML似乎是错误的(语义上),因为您有一个根节点Values,它具有子值 和 记录(似乎不属于这里)。
但是,考虑到XML是正确的,那么您不想将新创建的节点直接添加到Values节点下,而是添加到record(它是Values的子节点)下。要找出该节点,请使用[Python 3]: findall ( match, namespaces=None )。
代码.py:
from xml.etree import ElementTree as ET
if __name__ == "__main__":
tree = ET.parse("data.xml")
values = tree.getroot()
list_languages = values.getchildren()
processing = ET.Element("value")
processing.attrib["name"] = "cpu_use_limit"
processing.text = "20"
relevant_nodes = values.findall("record")
for relevant_node in relevant_nodes:
relevant_node.append(processing)
tree.write("output.xml", encoding="utf-8", xml_declaration=True)
运行代码后,
输出.xml:
<?xml version='1.0' encoding='utf-8'?>
<Values version="2.0">
<value name="system_type">osx</value>
<record name="service">
<value name="threads">1</value>
<value name="cpu_use_limit">20</value></record>
</Values>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句