[英]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.