Каждый так называемый элемент oxml
элемента в python-docx
имеет свойство .xml
именно для этого варианта использования. Используется для внутренних юнит-тестов.
Все, что вам нужно, - это доступ к внутренней переменной, используемой для элемента XML, которая обычно доступна, если щелкнуть ссылку [source]
рядом с этим объектом в документации, например, здесь: https://python -docx.readthedocs .io / о / последний / API / text.html # пункт-объекты
По этой ссылке вы можете обнаружить, что для абзаца базовый элемент XML доступен в ._p
. Обычно это тэг элемента без префикса пространства имен, хотя иногда это общий ._element
. Этот последний вариант можно попробовать в крайнем случае, если вам нужно угадать.
Так что использовать его так же просто, как:
>>> paragraph._p.xml
<w:p>
<w:pPr>
<w:jc w:val="right"/>
</w:pPr>
<w:r>
<w:t>Right-aligned</w:t>
</w:r>
</w:p>
В утилитах модульного тестирования, называемых CXML (компактный XML), есть сопутствующий предметно-ориентированный язык (DSL), который позволяет вам позаботиться о пространстве имен, что в противном случае является большой болью. Это выглядит примерно так:
expected_xml = cxml.xml('w:p(w:pPr/w:jc{w:val=right},w:r/w:t"Right-aligned")')
Вы можете увидеть примеры в модульных тестах, например, здесь: https://github.com/python-openxml/python-docx/blob/master/tests/text/test_paragraph.py#L113 и задать более конкретные вопросы здесь с тегом "python-docx", если вам нужна помощь.