在Python和lxml中生成XML
我从SQL中得到了这个XML,现在我想用Python 2.7和lxml来做同样的事情。
<?xml version="1.0" encoding="utf-16"?>
<results>
<Country name="Germany" Code="DE" Storage="Basic" Status="Fresh" Type="Photo" />
</results>
现在我得到了:
from lxml import etree
# create XML
results= etree.Element('results')
country= etree.Element('country')
country.text = 'Germany'
root.append(country)
filename = "xmltestthing.xml"
FILE = open(filename,"w")
FILE.writelines(etree.tostring(root, pretty_print=True))
FILE.close()
你知道怎么添加剩下的属性吗?
4 个回答
5
保存到XML文件
doc.write('output.xml', xml_declaration=True, encoding='utf-16')
而不是:
outFile = open('output.xml', 'w')
doc.write(outFile, xml_declaration=True, encoding='utf-16')
15
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,但其实大部分时候,只要我们仔细查看文档或者社区的讨论,就能找到解决办法。
比如说,当你在写代码时,可能会碰到一些错误信息。这些信息就像是程序在告诉你:“嘿,我遇到麻烦了!”这时候,你可以把这些错误信息放到网上去搜索,看看其他人是怎么解决的。
此外,很多时候,其他开发者会在像StackOverflow这样的论坛上分享他们的经验和解决方案。你可以在这些地方找到很多有用的建议和技巧,帮助你更好地理解问题所在。
总之,遇到问题时,不要慌张,先冷静下来,查找相关资料,看看有没有人遇到过类似的情况,通常都会有办法解决的。
from lxml import etree
# Create the root element
page = etree.Element('results')
# Make a new document tree
doc = etree.ElementTree(page)
# Add the subelements
pageElement = etree.SubElement(page, 'Country',
name='Germany',
Code='DE',
Storage='Basic')
# For multiple multiple attributes, use as shown above
# Save to XML file
outFile = open('output.xml', 'w')
doc.write(outFile, xml_declaration=True, encoding='utf-16')
21
注意,这段代码也会打印出字节顺序标记(BOM)。
>>> from lxml.etree import tostring
>>> from lxml.builder import E
>>> print tostring(
E.results(
E.Country(name='Germany',
Code='DE',
Storage='Basic',
Status='Fresh',
Type='Photo')
), pretty_print=True, xml_declaration=True, encoding='UTF-16')
��<?xml version='1.0' encoding='UTF-16'?>
<results>
<Country Status="Fresh" Type="Photo" Code="DE" Storage="Basic" name="Germany"/>
</results>