#python #xml #parsing
#питон #xml #синтаксический анализ #python
Вопрос:
Я пытаюсь проанализировать XML-файл, содержащий несколько элементов следующей структуры:
<root attribute_xmlns=date_as_str>
<element1 attrib1="str" attrib2="str" attrib3="str" attrib4="str">
<element2>
<element21>Some text</element21>
<element22>Some other text</element22>
</element2>
<element3>
<element31 attrib1="str" attrib2="str" attrib3="str"/>
<element32 attrib1="str" attrib3="str"/>
<element33 attrib1="str" attrib2="str" attrib3="str" attrib4="str"/>
</element3>
</element1>
</root>
Некоторая информация, которую я хочу получить, хранится в текстах атрибутов элементов, а некоторая — в тексте элемента.
Я пытался сохранить его в формате CSV с xml.etree.ElementTree
помощью итерации по каждому уровню файла и получения последовательного текста атрибутов и элементов. Проблема, однако, в том, что файл внутренне несогласован. В некоторых элементах могут отсутствовать атрибуты или элементы не имеют значения. В таких случаях мой окончательный CSV-файл — это просто большой беспорядок.
Как я могу это сделать? Мой план состоит в том, чтобы загрузить эти данные в базу данных SQL в приложении Django.
Комментарии:
1. Правильный способ обработки недопустимого XML — это отклонить его. Если вы все еще хотите использовать, вы должны знать, что находитесь на неизведанной территории, и все гарантии отключены. Вы можете попробовать использовать другую библиотеку, которая может быть более щадящей, например
beautifulsoup
, или вы можете реализовать свой собственный анализатор.2. Ну, с вами трудно не согласиться, и если бы мне не пришлось с этим справляться — я бы не стал. Однако анализ XML-данных BeautifulSoup кажется многообещающим. Спасибо!
3. Я не знаю, каким бизнесом вы занимаетесь, но simeone, должно быть, создал этот файл, и, возможно, можно попросить их исправить ошибки 😉