Ich benutze die Python lxml-Bibliothek, um meine XML zu parsen, aber ich habe es schwer, einen bestimmten Text zu analysieren. Kasse den folgenden Code:Warum nimmt Python lxml meine XML nicht?
>>> print type(raw_text_xml)
<type 'unicode'>
>>> from lxml import etree
>>> article_xml_root = etree.fromstring(raw_text_xml, parser)
Traceback (most recent call last):
File "<input>", line 1, in <module>
article_xml_root = etree.fromstring(raw_text_xml, parser)
File "lxml.etree.pyx", line 3032, in lxml.etree.fromstring (src/lxml/lxml.etree.c:68121)
File "parser.pxi", line 1786, in lxml.etree._parseMemoryDocument (src/lxml/lxml.etree.c:102470)
File "parser.pxi", line 1667, in lxml.etree._parseDoc (src/lxml/lxml.etree.c:101229)
File "parser.pxi", line 1035, in lxml.etree._BaseParser._parseUnicodeDoc (src/lxml/lxml.etree.c:96139)
File "parser.pxi", line 582, in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:91290)
File "parser.pxi", line 683, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:92476)
File "parser.pxi", line 622, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:91772)
XMLSyntaxError: Start tag expected, '<' not found, line 1, column 1
so sagt es das erste Zeichen kein <
ist, die durch Inspektion gilt:
>>> print raw_text_xml[:20]
ďťż<?xml version="1.
es hat 3 seltsame Zeichen vor dem xml. So zu reinigen diese Ich habe versucht, die folgenden:
>>> article_xml_root = etree.fromstring(raw_text_xml[3:], parser)
Traceback (most recent call last):
File "<input>", line 1, in <module>
article_xml_root = etree.fromstring(raw_text_xml[3:], parser)
File "lxml.etree.pyx", line 3032, in lxml.etree.fromstring (src/lxml/lxml.etree.c:68121)
File "parser.pxi", line 1781, in lxml.etree._parseMemoryDocument (src/lxml/lxml.etree.c:102435)
ValueError: Unicode strings with encoding declaration are not supported. Please use bytes input or XML fragments without declaration.
Und jetzt ist es beschwert sich plötzlich über sie ein Unicode-String mit Kodierungsdeklaration zu sein, während, wenn Sie den ganzen Weg sehen, um meine erste Zeile des Codes, es war Unicode alle eine lange.
Weiß jemand, warum nach dem Schneiden plötzlich einen ganz anderen Fehler gibt? Und am wichtigsten, weiß jemand, wie ich das lösen kann?
Fügen Sie Ihre XML-Datei hinzu. –