У меня есть программа на 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 генерировать это?