尝试使用lxml.etree.iterparse函数解析以下Python文件。
“sampleoutput.xml”
<item> <title>Item 1</title> <desc>Description 1</desc> </item> <item> <title>Item 2</title> <desc>Description 2</desc> </item>我尝试了使用Python lxml和Iterparse解析大型XML文件的代码
在etree.iterparse(MYFILE)调用之前,我做了MYFILE = open(“/ Users / eric / Desktop / 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有任何想法吗? 谢谢!
Trying to parse the following Python file using the lxml.etree.iterparse function.
"sampleoutput.xml"
<item> <title>Item 1</title> <desc>Description 1</desc> </item> <item> <title>Item 2</title> <desc>Description 2</desc> </item>I tried the code from Parsing Large XML file with Python lxml and Iterparse
before the etree.iterparse(MYFILE) call I did MYFILE = open("/Users/eric/Desktop/wikipedia_map/sampleoutput.xml","r")
But it turns up the following error
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 1any ideas? thank you!
最满意答案
问题在于,如果XML没有完全一个顶级标记,则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>The problem is that XML isn't well-formed if it doesn't have exactly one top-level tag. You can fix your sample by wrapping the entire document in <items></items> tags. You also need the <desc/> tags to match the query that you're using (description).
The following document produces correct results with your existing code:
<items> <item> <title>Item 1</title> <description>Description 1</description> </item> <item> <title>Item 2</title> <description>Description 2</description> </item> </items>更多推荐
发布评论