繁体   English   中英

如何使用python创建用户可修改的XML文档?

[英]How can i create a user modifiable XML document with python?

我想创建此xml文件并使其创建,以便我可以通过终端对其进行修改,并在以后添加新的“ log”条目。

这是修改后我想要的结果:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="hwlog.xslt"?>
<logroot>
  <log>
    <subject>Maths</subject>
    <timestart>12:00</timestart>
    <timeend>13:00</timeend>
    <timespent>1H</timespent>
    <worktype>Exercises</worktype>
    <workplace>home</workplace>
  </log>
  <log>
    <subject>Geo</subject>
    <timestart>14:00</timestart>
    <timeend>15:00</timeend>
    <timespent>1H</timespent>
    <worktype>Exercises</worktype>
    <workplace>home</workplace>
  </log>
</logroot>

到目前为止,这是我的python脚本:

from lxml import etree

doc = etree.parse('hwlog.xml')

log = etree.Element("log")

subject = etree.SubElement(log, "subject")
timestart = etree.SubElement(log, "timestart")
timeend = etree.SubElement(log, "timeend")
timespent = etree.SubElement(log, "timespent")
worktype = etree.SubElement(log, "worktype")
workplace = etree.SubElement(log, "workplace")

titlesubjectinput = input("Subject : ")
titletimestartinput = input("Time Started : ")
titletimeendinput = input("Time Ended : ")
titletimespentinput = input("Time Spent [time ended - time started] : ")
titleworktypeinput = input("Work Type : ")
titleworkplaceinput = input("Work Place : ")

subject.text = titlesubjectinput
timestart.text = titletimestartinput
timeend.text = titletimeendinput
timespent.text = titletimespentinput
worktype.text = titleworktypeinput
workplace.text = titleworkplaceinput

outfile = open("hwlog.xml", "wb")
doc.write(outfile)

尽管在运行此命令并输入例如(按提示顺序):Geo,14:00、15:00、1H,Practices时,XML文件的首页显示为:

<?xml-stylesheet type="text/xsl" href="hwlog.xslt"?><logroot>
  <log>
    <subject>Maths</subject>
    <timestart>12:00</timestart>
    <timeend>13:00</timeend>
    <timespent>1H</timespent>
    <worktype>Exercises</worktype>
    <workplace>home</workplace>
  </log>
</logroot>

这显然不是我想要的。 我怎样才能使它像我想要的那样出现(第一个XML示例)?

请原谅我糟糕的编程技巧,我是个“菜鸟”。

您必须附加新的log-Element:

from lxml import etree

doc = etree.parse('hwlog.xml')

log = etree.SubElement("log")
etree.SubElement(log, "subject").text = input("Subject : ")
etree.SubElement(log, "timestart").text = input("Time Started : ")
etree.SubElement(log, "timeend").text = input("Time Ended : ")
etree.SubElement(log, "timespent").text = input("Time Spent [time ended - time started] : ")
etree.SubElement(log, "worktype").text = input("Work Type : ")
etree.SubElement(log, "workplace").text = input("Work Place : ")

doc.getroot().append(log)
with open("hwlog.xml", "wb") as outfile:
    doc.write(outfile)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM