使用Python进行方案转换的XML方案

时间:2017-06-09 16:14:43

标签: python xml dictionary

我是书籍的作家,我是Python的新手。我的问题是战略性的。我将我的手稿写入带有专有标签的xml文件(它们的大小约为1 MB和5000-1000行):

manuscript.xml
<h>Title of Chapter</h>
<p>This is a sentence, with one word written in <i>italics</i></p>

我经常想输出到目前为止我写的内容,并且我正在尝试使用Python创建一个完全自动化的工作流程。 Python应该将我的XML转换为两种不同的XML方案:

1. HTML for epub (with creating IDs):
<h1 id="title-of-chapter">Title of Chapter</h1>
<p>This is a sentence, with one word written in <i>italics</i></p>

然后保存为manuscript.html。

2. ODT:
<text:h text:style-name="HeadlineStyle1" text:outline-level="1">GetByName</text:h>
<text:p text:style-name="ParagraphStyle1">This is a sentence, with one word written in <text:span text:style-name="Italics">italics</text:span></text:p>

然后另存为content.xml

我不确定是否应该真正解析XML(原始XML→dict→新XML)。将原始文件作为纯文本处理并让Python只转换标记会不会更容易,因此&lt; p&gt;成为&lt; text:p text:style-name =“ParagraphStyle1”&gt;?

另一方面,上述任务只是第一步。稍后,我想让Python创建一个目录,收集所有标题并将其写入帮助文件toc.ncx,最后让Python将所有这些文件压缩到epub容器中。

有很多关于xml→dict的教程,但很难找到关于第二步dict→xml的细节。

1 个答案:

答案 0 :(得分:0)

可以轻松地在ElementTree中重命名标记:

for oldTag in root.iter('oldtag'):
   oldTag.tag = 'newtag'

XSLT无法做到这一点。它不能转换XML,它只能从中挑选元素。