现在我已经在我的python脚本中硬编码了整个xml文件,只是做了out.write(),但是现在它变得越来越难以管理,因为我有多种类型的xml文件。
设置模板的最简单,最快捷的方法是什么,以便我可以给变量名amd filename?
答案 0 :(得分:4)
轻量级选项是xml.dom.minidom
xml.dom.minidom是文档对象模型接口的轻量级实现。它旨在比完整的DOM更简单,也更小。
您可以使用xml.dom
API创建DOM对象,例如DOM Element objects,并使用Node.writexml
生成XML。请注意,这需要构建DOM层次结构,这可能不是您所追求的。
更多pythonic选项是ElementTree。
Element类型是一个灵活的容器对象,旨在将分层数据结构存储在内存中。该类型可以描述为列表和字典之间的交叉。
ElementTree对象更易于在Python
中创建和处理,并且可以使用ElementTree.dump()或ElementTree.tostring()
答案 1 :(得分:3)
两种选择。
模板工具,例如Jinja2。
构建DOM对象。没有听起来那么糟糕。 ElementTree有一个令人愉快的工厂,用于构建XML标签和创建必要的结构。
答案 2 :(得分:3)
简短回答是:你应该关注和处理数据(即python对象)而不是原始XML
基本故事: XML应该是某些数据或数据集的表示。 你在关于数据类型,它代表什么等等的问题中没有很多细节 - 所以我会给你一些基本答案。
Python选择: BeautifulSoup,lxml和其他python库(ElementTree等)使得处理XML变得更加容易。与我试图直接使用原始格式的XML相比,它们让我更容易读入或写出XML数据。
在这两个(输入,输出)活动的中间,我的python程序正在处理一个很好的python对象或我可以走的某种解析树。您可以读取数据,从该字符串创建对象,操作它并写出XML。
其他选择,模板: 好的 - 也许您喜欢XML并且只想“模板化”它以便您可以使用数据填充它。
如果你没有真正操纵数据,你可能会对此感到更舒服 - 但只是将其表示为输出。而且,这类似于您当前使用的XML字符串 - 因此可能更为熟悉。
使用Cheetah,Jinja或其他模板库来提供帮助。 使用该模板语言为XML文件创建模板。
例如,您只需从文件或数据库表中读取书籍列表。 您可以使用模板将此书对象列表传递给模板引擎,然后告诉它写出您的XML输出。
这些图书对象的示例模板:
<?xml version="1.0"?>
<catalog>
{% for object in object_list %}
<book id="{{ object.bookID }}">
<author>{{ object.author_name }}</author>
<title>{{ object.title }}</title>
<genre>{{ object.genre }}</genre>
<price>{{ object.price }}</price>
<publish_date>{{ object.pub_date }}</publish_date>
<description>{{ object.description }}</description>
</book>
{% endfor %}
</catalog>
</xml>
模板引擎将遍历“object_list”并输出包含所有书籍的长XML文件。这比现在存储原始XML字符串要好得多 。
这使更新&amp;修改XML的显示,与数据,数据存储和数据操作分开 - 让您的生活更轻松。
答案 3 :(得分:1)
答案 4 :(得分:0)
您要求最简单,最快捷,请参阅此帖:http://blog.simonwillison.net/post/58096201893/simpletemplates
如果您想要更聪明的事情,请查看here。