在python中模板xml文件的快速简便的方法

use*_*085 6 python xml

现在我已经在我的 python 脚本中对整个 xml 文件进行了硬编码,并且只是在执行 out.write(),但是现在它越来越难以管理,因为我有多种类型的 xml 文件。

什么是设置模板的最简单快捷的方法,以便我可以只提供变量名称和文件名?

joe*_*oej 5

简短的回答是:您应该关注和处理数据(即 python 对象)而不是原始 XML

基本故事: XML 应该是一些数据或数据集的表示。您的问题中没有关于数据类型、它代表什么等的很多细节——所以我会给你一些基本的答案。

Python 选择: BeautifulSoup、lxml 和其他 Python 库(ElementTree 等),使处理 XML 更容易。与尝试直接使用原始格式的 XML 相比,它们让我读入或写出 XML 数据要容易得多。

在这 2 个(输入、输出)活动的中间,我的 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>
Run Code Online (Sandbox Code Playgroud)

模板引擎将遍历“object_list”并输出包含所有书籍的长 XML 文件。这比存储原始 XML 字符串好得多,就像您目前那样。

这使得 XML 显示的更新和修改与数据、数据存储和数据操作分离——让您的生活更轻松。


zoo*_*ash 1

您要求最简单和最快,所以请参阅这篇文章:http://blog.simonwillison.net/post/58096201893/simpletemplates

如果您想要更智能的东西,请看这里