/ xmlr В архиве

Если вы найдете это репо и подумаете о его использовании, пересмотрите вариант использования xmltodict , так как он более полный, хорошо протестирован и гораздо более активно поддерживается!

Обработка больших файлов XML (>> 10 МБ) может быть проблематичной, а использование модуля xml в Python напрямую приводит к огромным накладным расходам памяти. Чаще всего эти большие XML-файлы представляют собой файлы с чистыми данными, в которых хранятся высокоструктурированные данные, которые не имеют внутренней потребности в хранении в XML.

Этот пакет предоставляет итерационные методы для работы с ними, считывая XML-документы в Python dict. представление вместо этого в соответствии с методологией, указанной на странице Преобразование между XML и JSON. xmlr вдохновлен решениями, описанными в сообщениях блога Высокопроизводительный синтаксический анализ XML в Python с lxml и Последовательный анализ больших XML-файлов в Python, что позволяет без проблем анализировать очень большие документы без увеличения нагрузки на память .

Этот пакет обычно предоставляет поездку в один конец; после синтаксического анализа не обязательно существует взаимно однозначная связь с источником XML.

Установка

 pip install xmlr 

Использование

Чтобы проанализировать весь документ, используйте метод xmlparse :

 from xmlr import xmlparsedoc = xmlparse ('very_large_doc.xml'  ) 

Итератор, xmliter , выдающий элементы указанного типа по мере их анализа из документа, также присутствует:

 from xmlr import xmliterfor d in xmliter ('very_large_record.xml', 'Record'): print (d) 

Требуемый синтаксический анализатор также может быть указано. Доступные методы:

  • ELEMENTTREE — использование xml.etree.ElementTree в качестве серверной части.
  • C_ELEMENTTREE — использование xml.etree.cElementTree в качестве бэкэнда.
  • LXML_ELEMENTTREE — Использование lxml.etree в качестве серверной части. Требуется установка пакета lxml .

Их можно использовать следующим образом:

  from xmlr import xmliter, XMLParsingMethodsfor d в xmliter ('very_large_record.xml', 'Record', parsing_method = XMLParsingMethods.LXML_ELEMENTTREE): print (d) 

Преобразование типов не выполняется правильно сейчас же. Значение в outputdictionary может иметь тип dict (вложенный документ), list (массив похожих документов), str (лист или значение) или None (пустой тег листа XML). Все ключи имеют тип str .

Тесты

Тесты выполняются с помощью pytest :

 $ py.test tests/=============================  запускается тестовая сессия ============================== платформа linux2 - Python 2.7.6, pytest-2.9.1, py-  1.4.31, pluggy-0.3. 1rootdir:/home/hbldh/Repos/xmlr, inifile: собрано 50 элементовtests/test_iter.py ........................... tests/test_methods  .py ..tests/test_parsing.py ..................... ====================  ====== 50 прошло за 0,50 секунды =========================== 

Тесты извлекают некоторые XML-документы из руководств W3Schools по XML, а также используют объединенную сокращенную версию документа, доступную в США. записи о продлении авторских прав доступны для загрузки.



/Python-XML

Этот репозиторий содержит программу Python для анализа файла XML . В этом примере мы используем файл данных Гран-при Формулы-1, который имеет форму XML. Мы заинтересованы в обработке этого файла, извлечении некоторой интересной информации и представлении ее в удобном для чтения виде.

Файл F1-Grand-Prix-Australia.xml доступен по адресу http://www. .enetpulse.com/documentation/

  • Python-XML.py
  • Python-XML.ipynb
  • README .md
  • LICENSE.md
  • F1-Grand-Prix-Australia.xml
  • XMLResults.txt
  • Терминал Bash или оболочки python Python-XML.py

  • Ipython или Jupyter % run Python-XML.py

Оцените статью
clickpad.ru
Добавить комментарий