У меня есть данные XML, которые выглядят так:
<xml>
The captial of <place pid="1">South Africa</place> is <place>Pretoria</place>.
</xml>
Я хотел бы иметь возможность извлечь:
- XML-элементы в том виде, в каком они в настоящее время представлены в etree.
- Полный текст документа между начальным и конечным тегами.
- Расположение в простом тексте каждого начального элемента в виде смещения символа.
(3) сейчас самое важное требование; etree обеспечивает (1) штраф.
Я не вижу никакого способа сделать (3) напрямую, но надеялся, что повторение элементов в дереве документа вернет много небольших строк, которые можно было бы повторно собрать, таким образом предоставив (2) и (3). Однако запрос .text корневого узла возвращает только текст между корневым узлом и первым элементом, например. "Столица ".
Выполнение (1) с SAX может включать в себя реализацию многого, что уже было написано много раз, например. минидом и этри. Использование lxml не подходит для пакета, в который должен войти этот код. Кто-нибудь может помочь?