如何在跳过 xmlns 的同时插入带有命名空间的 lxml 标记?
How do you insert a lxml tag with namespace while skipping xmlns?
我正在尝试使用 python-docx 编写我的 python 脚本以将方程式添加到 docx 文件。由于 python-docx 尚不支持,因此我需要直接使用 lxml 修改 OOXML。我需要添加一些标签,所以结果 XML 看起来像这样:
<m:r>
<m:t>(5−x)</m:t>
</m:r>
我无法创建新的裸体
<m:r>
使用 lxml 的节点。使用类似下面的代码
new_node = etree.Element('{m}r', nsmap={'m': ''})
给我一个
<m:r xmlns:m="m">
节点,除了我不需要 xmlns 部分。 (python-docx 为我处理剩余的 XML 操作,如果 xmlns 在那里,docx 文件实际上不会被 MS Word 识别。)有没有办法制作一个裸体
<m:r>
节点?
python-docx
知道 "m": "http://schemas.openxmlformats.org/officeDocument/2006/math"
名称空间前缀映射:https://github.com/python-openxml/python-docx/blob/master/docx/oxml/ns.py#L18
因此您可以使用 python-docx
内部构件来创建这样的元素:
from docx.oxml import OxmlElement
r = OxmlElement("m:r")
然后您可以像使用任何其他 lxml
元素一样使用该元素,例如将其作为其他元素的子元素附加或插入。
我正在尝试使用 python-docx 编写我的 python 脚本以将方程式添加到 docx 文件。由于 python-docx 尚不支持,因此我需要直接使用 lxml 修改 OOXML。我需要添加一些标签,所以结果 XML 看起来像这样:
<m:r>
<m:t>(5−x)</m:t>
</m:r>
我无法创建新的裸体
<m:r>
使用 lxml 的节点。使用类似下面的代码
new_node = etree.Element('{m}r', nsmap={'m': ''})
给我一个
<m:r xmlns:m="m">
节点,除了我不需要 xmlns 部分。 (python-docx 为我处理剩余的 XML 操作,如果 xmlns 在那里,docx 文件实际上不会被 MS Word 识别。)有没有办法制作一个裸体
<m:r>
节点?
python-docx
知道 "m": "http://schemas.openxmlformats.org/officeDocument/2006/math"
名称空间前缀映射:https://github.com/python-openxml/python-docx/blob/master/docx/oxml/ns.py#L18
因此您可以使用 python-docx
内部构件来创建这样的元素:
from docx.oxml import OxmlElement
r = OxmlElement("m:r")
然后您可以像使用任何其他 lxml
元素一样使用该元素,例如将其作为其他元素的子元素附加或插入。