Написать Open Office XML (например, docx) с XML, который соответствует пространству имен OOXML - PullRequest
0 голосов
/ 04 октября 2018

У меня есть программа на python, которая редактирует XML в файле .docx.Я хотел бы редактировать XML с ETree.

Когда я читаю XML из файла .docx, он начинается следующим образом:

b'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\r\n<w:document xmlns:wpc="http://schemas.micro'...

Это переменная с именем data.Я создаю дерево элементов с помощью:

import xml.etree.ElementTree as ElementTree
tree = ElementTree.XML(data)

Я преобразовываю его обратно с помощью:

data = ElementTree.tostring(tree)

Однако в XML произошли незначительные изменения.Теперь это выглядит так:

b'<ns0:document xmlns:ns0="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:ns1="ht...

Word не будет читать это, даже если это стандартный XML.

РЕДАКТИРОВАТЬ: я пытался добавить строку в свой XML, просто чтобы получить егов оба конца:

XML_HEADER=b'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\r\n'
tree = ElementTree.XML(data)
data = XML_HEADER + ElementTree.tostring(tree)

Но я все еще получаю ошибку:

We're sorry. We can't open <filename>.docx because we found a problem with its contents.
Details:
The XML data is invalid according to the schema.
Location: Part: /word/document.xml, Line: 0, Column:0

Я не могу исправить слово.Я должен сгенерировать XML, который выглядит точно так же, как XML, с которого я начал.Как мне заставить ETree генерировать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...