我试图在Google App Engine上使用pptx-python(创建一个powerpoint文件)。我不需要图像,所以我只是评论了枕头的依赖关系。这给我留下了几乎可行的东西,除了我有版本问题。 GAE中的lxml版本是2.3,显然在版本2.3.2中添加了SubElement方法。我需要一个对象填充。SubElement
pptx代码很好地包装了lxml调用,所以看起来我可以通过在应用程序级别重写SubElement来解决此问题。不幸的是,我真的没有第一个线索如何做到这一点。而lxml代码似乎只是用C编写的东西的python包装器。所以在我花费几天时间来加速lxml之前,我希望你们中的一位天才能够帮助我。
这是PPTX/OXML/shared.py代码:
def SubElement(parent, nsptag_str, **extra):
"""
Return an lxml element having *nsptag_str*, newly added as a direct child
of *parent*. The new element is appended to the sequence of children, so
this method is not suitable if the child element must be inserted at a
different position in the sequence. The class of the returned element is
the custom element class for its tag, if one is defined. Additional
named parameters defined on lxml ``makeelement()`` are accepted, such as
attrib=attr_dct and e.g. ``visible='1'``.
"""
nsptag = NamespacePrefixedTag(nsptag_str)
return objectify.SubElement(
parent, nsptag.clark_name, nsmap=nsptag.nsmap, **extra
)
有人能告诉我如何重写功能,使得它不依赖于objectify.SubElement,而是只使用方法可用lxml 2.3?
添加了一个可能重写SubElement()的情况下,事实证明更方便。 – scanny
我添加了该代码,并将一些传递cleanup_namespaces = True的地方改为使用lxml.etree.cleanupnamespaces:''etree.cleanup_namespaces(txBody) objectify.deannotate(txBody)#,cleanup_namespaces = True)''和那就是诀窍! –