Конечно, это должно быть решено, и общая проблема:
У меня есть XML-представление HTML-страниц, которые содержат маркеры абзаца и новой строки (<p/>
, <br/>
или <p> .. </p>
). Однако в истинном HTML-стиле маркеры абзаца используются непоследовательно и не покрывают весь текст на странице.
Например, XML может выглядеть так:
<html>some text<p>more text 1</p>text2<p/>text3<p>text4</p></html>
Есть ли способ использовать какой-нибудь синтаксический анализатор, чтобы легко получить все фрагменты текста внутри или разделить по границам абзаца?
Так что для приведенного выше XML это должен быть список
["some text","more text 1","text2","text3","text4"]
Для некоторого XML без маркера абзаца / новой строки внутри, это должен быть весь текст элемента html. Для этого:
<html>text 1<p/>text 2<br/>text 3</html>
это должно быть
["text 1", "text 2", "text 3"]
Каков наилучший подход для достижения этого, например, с помощью библиотека xml.etree (для этого у меня уже есть ElementTree) или любая другая библиотека, которая может обрабатывать XML или html в стиле xml?
Конечно, простые приведенные выше примеры могут быть решены "вручную" с использованием моего собственного кода синтаксического анализа, но фактический XML может содержать гораздо более сложный XML, поэтому преобразование в текст должно быть в состоянии справиться с этим должным образом.