разбор большого xml-файла с помощью Python-etree.ошибка
попытка проанализировать следующий файл Python с помощью lxml.etree.функции методом iterparse, показанный.
" sampleoutput.XML-код"
<item>
<title>Item 1</title>
<desc>Description 1</desc>
</item>
<item>
<title>Item 2</title>
<desc>Description 2</desc>
</item>
я попробовал код разбор большого XML-файла с Python lxml и Iterparse
перед etree.методом iterparse, показанный(файл myfile) звонок я сделал файл myfile = открыть("/пользователи/Эрик/рабочий стол/wikipedia_map/sampleoutput.xml", "r")
но появляется следующая ошибка
Traceback (most recent call last):
File "/Users/eric/Documents/Programming/Eclipse_Workspace/wikipedia_mapper/testscraper.py", line 6, in <module>
for event, elem in context :
File "iterparse.pxi", line 491, in lxml.etree.iterparse.__next__ (src/lxml/lxml.etree.c:98565)
File "iterparse.pxi", line 543, in lxml.etree.iterparse._read_more_events (src/lxml/lxml.etree.c:99086)
File "parser.pxi", line 590, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:74712)
lxml.etree.XMLSyntaxError: Extra content at the end of the document, line 5, column 1
какие идеи? спасибо!
2 ответов
проблема в том, что XML плохо сформирован, если у него нет точно одного тега верхнего уровня. Вы можете исправить свой образец, обернув весь документ в <items></items>
теги. Вам также нужно <desc/>
теги, соответствующие запросу, который вы используете (description
).
следующий документ дает правильные результаты с вашим существующим кодом:
<items>
<item>
<title>Item 1</title>
<description>Description 1</description>
</item>
<item>
<title>Item 2</title>
<description>Description 2</description>
</item>
</items>
насколько я знаю, xml.etree.ElementTree обычно ожидает, что XML-файл будет содержать один "корневой" элемент, т. е. один XML-тег, который заключает в себе всю структуру документа. Из сообщения об ошибке, которое вы опубликовали, я бы предположил, что это проблема и здесь:
строка 5 относится ко второму <item>
тег, поэтому я думаю, что Python жалуется, что после предполагаемого корневого элемента (т. е. первого <item>
tag) был закрыт.