[英]Writing to a xml file using pythons element tree
I'm using python's Element tree library to parse/write to an xml file: 我正在使用python的Element树库来解析/写入xml文件:
<?xml version='1.0' encoding='utf-8'?>
<data>
<reminder id="9">
<enabled>true</enabled>
<programmename>Show Me Show Me</programmename>
<starttime>10:05</starttime>
<sdate>Tuesday, 17 November 2015</sdate>
<channel>NA</channel>
</reminder>
</data>
I'm using the following to write this out: 我使用以下内容将其写出:
from xml.etree import ElementTree as ET
data = ET.Element("data")
reminder = ET.SubElement(data, "reminder")
reminder.set("id", "9")
enabled = ET.SubElement(reminder, "enabled")
enabled.text = "true"
programmename = ET.SubElement(reminder, "programmename")
programmename.text = new_programmename
starttime = ET.SubElement(reminder, "starttime")
starttime.text = new_programmetime
sdate = ET.SubElement(reminder, "sdate")
sdate.text = new_programmedate
channel = ET.SubElement(reminder, "channel")
channel.text = "NA"
indent(data, level=0)
tree = ET.ElementTree(data)
tree.write(xmlfile, xml_declaration=True, encoding='utf-8', method="xml")
Although I'm struggling to understand how to add an additional "record"/element? 尽管我在努力了解如何添加其他“记录” /元素? for example, so the xml looks like this: 例如,因此xml如下所示:
<?xml version='1.0' encoding='utf-8'?>
<data>
<reminder id="9">
<enabled>true</enabled>
<programmename>Show Me Show Me</programmename>
<starttime>10:05</starttime>
<sdate>Tuesday, 17 November 2015</sdate>
<channel>NA</channel>
</reminder>
<reminder id="10">
<enabled>true</enabled>
<programmename>foo</programmename>
<starttime>13:05</starttime>
<sdate>Wednesday, 18 November 2015</sdate>
<channel>NA</channel>
</reminder>
<data>
Any assistance would be greatly appreciated, i cant find any reference to this or rather reference that i can understand... 任何帮助将不胜感激,我找不到任何参考,或者我可以理解的参考...
Try as below- 尝试如下-
from lxml import etree as et
xml="""<?xml version='1.0' encoding='utf-8'?>
<data>
<reminder id="9">
<enabled>true</enabled>
<programmename>Show Me Show Me</programmename>
<starttime>10:05</starttime>
<sdate>Tuesday, 17 November 2015</sdate>
<channel>NA</channel>
</reminder>
</data>"""
tree = et.fromstring(xml)
element = tree.find(".//reminder[@id='9']")
element_parent = element.getparent()
element_parent.insert(element_parent.index(element)+1,et.XML("""
<reminder id="10">
<enabled>true</enabled>
<programmename>foo</programmename>
<starttime>13:05</starttime>
<sdate>Wednesday, 18 November 2015</sdate>
<channel>NA</channel>
</reminder>"""))
print(et.tostring(tree))
Prints- 版画
<data>
<reminder id="9">
<enabled>true</enabled>
<programmename>Show Me Show Me</programmename>
<starttime>10:05</starttime>
<sdate>Tuesday, 17 November 2015</sdate>
<channel>NA</channel>
</reminder>
<reminder id="10">
<enabled>true</enabled>
<programmename>foo</programmename>
<starttime>13:05</starttime>
<sdate>Wednesday, 18 November 2015</sdate>
<channel>NA</channel>
</reminder>
</data>
acknowledge "unutbu" 承认“ unutbu”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.