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

2024-09-30 02:14:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建这个xml文件,并将其设置为可以通过终端对其进行修改,然后添加新的“日志”条目

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

<?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,1小时,练习,回家 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示例)

请原谅我糟糕的编程技巧,我是个“傻瓜”


Tags: textloginputxmlsubjectetreesubelementtimestart
1条回答
网友
1楼 · 发布于 2024-09-30 02:14:44

然后必须附加新的日志元素:

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)

相关问题 更多 >

    热门问题