![](/img/trans.png)
[英]Easy way to get data between tags of xml or html files in python?
[英]fast and easy way to template xml files in python
现在我已经在我的python脚本中硬编码了整个xml文件,只是做了out.write(),但是现在它变得越来越难以管理,因为我有多种类型的xml文件。
设置模板的最简单,最快捷的方法是什么,以便我可以给变量名称amd filename?
轻量级选项是xml.dom.minidom
xml.dom.minidom是文档对象模型接口的轻量级实现。 它旨在比完整的DOM更简单,也更小。
您可以使用xml.dom
API创建DOM对象,例如DOM Element对象 ,并使用Node.writexml
生成XML。 请注意,这需要构建DOM层次结构,这可能不是您所追求的。
更多pythonic选项是ElementTree 。
Element类型是一个灵活的容器对象,旨在将分层数据结构存储在内存中。 该类型可以描述为列表和字典之间的交叉。
ElementTree对象在Python
中更容易创建和处理,并且可以使用ElementTree.dump()或ElementTree.tostring()序列化为XML
两个选择。
模板工具,例如Jinja2 。
构建DOM对象。 没有听起来那么糟糕。 ElementTree有一个令人愉快的工厂,用于构建XML标签和创建必要的结构。
简短的回答是:您应该关注和处理数据(即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字符串要好得多,就像你现在一样。
这使得XML显示的更新和修改与数据,数据存储和数据操作分开 - 使您的生活更轻松。
你要求最简单,最快,所以请看这篇文章: http : //blog.simonwillison.net/post/58096201893/simpletemplates
如果你想要更聪明的东西,请看看这里 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.