簡體   English   中英

使用pythons元素樹寫入xml文件

[英]Writing to a xml file using pythons element tree

我正在使用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>

我使用以下內容將其寫出:

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")

盡管我在努力了解如何添加其他“記錄” /元素? 例如,因此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>

任何幫助將不勝感激,我找不到任何參考,或者我可以理解的參考...

嘗試如下-

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))

版畫

<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>

承認“ unutbu”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM