现在我已经在我的 python 脚本中对整个 xml 文件进行了硬编码,并且只是在执行 out.write(),但是现在它越来越难以管理,因为我有多种类型的 xml 文件。
什么是设置模板的最简单快捷的方法,以便我可以只提供变量名称和文件名?
简短的回答是:您应该关注和处理数据(即 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 显示的更新和修改与数据、数据存储和数据操作分离——让您的生活更轻松。
您要求最简单和最快,所以请参阅这篇文章:http://blog.simonwillison.net/post/58096201893/simpletemplates
如果您想要更智能的东西,请看这里。