修改python中的xml数据

时间:2014-05-18 08:41:59

标签: python xml powerpoint

我试图编辑pptx xml文件的属性以在幻灯片之间添加幻灯片,我知道有一个名为python-pptx的模块,但它无法做到这一点。

所以一切都从一个文件&#34; [Content_Types] .xml&#34;我要做的第一件事就是在<Override ContentType="application/vnd.openxmlformats-officedocument.presentationml.slide+xml" PartName="/ppt/slides/slide4.xml"/>之后添加一个字符串/ppt/slides/slide3.xml,然后将其他幻灯片的数量增加1

full xml看起来像这样

<?xml version="1.0" encoding="UTF-8" standalone="true"?>
-<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
<Override ContentType="application/vnd.openxmlformats-officedocument.presentationml.slide+xml" PartName="/ppt/slides/slide1.xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.presentationml.slide+xml" PartName="/ppt/slides/slide2.xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.presentationml.slide+xml" PartName="/ppt/slides/slide3.xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.presentationml.slide+xml" PartName="/ppt/slides/slide4.xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.presentationml.slide+xml" PartName="/ppt/slides/slide5.xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.presentationml.slide+xml" PartName="/ppt/slides/slide6.xml"/>
</Types>

有关如何操作的任何建议?

1 个答案:

答案 0 :(得分:1)

你不需要使用xml解析器,只需从文件读出数据并insert你想要的位置,对于你的情况,最后添加数据是可以的该文件没有插入中间并移动1,因为你的xml没有子树,无论如何,resault将是相同的

with open('[Content_Type].xml', 'r') as fl:
    readout = fl.read()
spl = readout.split('><')
spl.insert(len(spl)-1, """Override ContentType="application/vnd.openxmlformats-officedocument.presentationml.slide+xml" PartName="/ppt/slides/slide%d.xml"/""" %(slides+1))
final = '><'.join(spl)
with open('[Content_Type].xml', 'w') as fl:
    fl.write(final)