xml 解析错误:python 中格式不正确<invalid token>
Posted
技术标签:
【中文标题】xml 解析错误:python 中格式不正确<invalid token>【英文标题】:xml parsing error : not well-formed<invalid token> in python 【发布时间】:2012-07-21 16:20:17 【问题描述】:您好,我正在抓取 XML 文件。对于 html,我使用了 scrapy,对于 XML,我决定使用 xml.sax
解析它。
下面是一个示例代码(不要把它当作一个真实的例子)只是为了查看我的疑问:
from xml.sax.handler import ContentHandler
import xml.sax
xmlFilePath = 'users/documents/jobstext.xml'
try:
parser = xml.sax.make_parser( )
parser.parse(open(xmlFilePath))
except (xml.sax.SAXParseException), e:
print "*** PARSER error: %s" % e
print e,"What is the error actually >>>>"
以下是XML代码:
<?xml version="1.0" encoding="utf-8"?>
<jobs>
<reader><![CDATA[Identity Group]]></reader>
<readerUrl><![CDATA[http://www.example.com]]></readerUrl>
<job>
<title><![CDATA[Architect - OT]]></title>
<category><![CDATA[LTC/SNF]]></category>
<jobId><![CDATA[139693]]></jobId>
<specialization><![CDATA[LTC/SNF]]></specialization>
<positionType><![CDATA[Travel]]></positionType>
<description><![CDATA[<DIV>OT needed for a SNF in Oregon. Oregon is a dramatic land of many changes. From the rugged Oregon seacoast, the high mountain passes of the country for Travel Allied Professionals and Travel Nurses. Our clients are among the most prestigious healthcare facilities in the country.</DIV>
<DIV> </DIV>
</description>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Symbol; COLOR: black; mso-ascii-font-family: 'Times New Roman'">�</SPAN><SPAN style="COLOR: black"><FONT face="Times New Roman"><SPAN style="mso-spacerun: yes"> </SPAN>Position will manage 24 ED Rooms with 24/7 accountability<o:p></o:p></FONT></SPAN></FONT></P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><FONT size=3><SPAN style="FONT-FAMILY: Symbol; COLOR: black; mso-ascii-font-family: 'Times New Roman'">�</SPAN><SPAN style="COLOR: black"><FONT face="Times New Roman"> <SPAN style="mso-spacerun: yes"> </SPAN>55 FTEs <o:p></o:p></FONT></SPAN></FONT></P>
</job>
</jobs>
结果:
*** PARSER error: users/documents/jobstext.xml:13:150: not well-formed <invalid token>
users/documents/jobstext.xml:13:150: not well-formed <invalid token> What is the error actually >>>>
当执行到达<p>
标签并且索引150显示错误无效令牌时会发生什么?我期待这是因为?
标签,你可以在上面的错误中看到这一点。
那么谁能告诉我如何解决xml解析中not well-formed <invalid token>
这个错误,
如果我解释的格式有误,很抱歉,但希望我能很好地解释这个概念。
编辑代码:
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial">THE MOST COMPETITIVE RATES IN NM .....<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial">Busy <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><st1:place w:st="on"><st1:PlaceName w:st="on">Acute</st1:PlaceName> <st1:PlaceName w:st="on">Care</st1:PlaceName> <st1:PlaceType w:st="on">Hospital</st1:PlaceType></st1:place> needs Occupational Therapists. Experience with </SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Ortho, Neuro, vestibular balance, aquatic a plus!<SPAN style="COLOR: black"> New grads welcome.<SPAN style="mso-spacerun: yes"> </SPAN>Signon Bonus and help with relocation.<SPAN style="mso-spacerun: yes"> </SPAN>For more details please call or email Carole 800 995 2673 X1329 or <A href="mailto:cs@coremedicalgroup.com"><SPAN style="mso-bidi-font-weight: bold; mso-bidi-font-size: 12.0pt">cs@coremedicalgroup.com</SPAN></A><o:p></o:p></SPAN></SPAN></P>
【问题讨论】:
@Quentin:上述两个标签(例如)执行时没有错误,正如你所指出的那样 class="Msnormal" 【参考方案1】:既然问题变了……
XML 属性必须被引用。
例如:class=MsoNormal
应该是class="MsoNormal"
【讨论】:
其实主题是我的xml文件有很多job相关的数据,所以这里我只粘贴了一个job相关的xml。对于我在上面编辑的其他一些没有逗号的标签执行相同的操作。
好的,我只粘贴了段落标签,现在直接从代码中复制而无需编辑,你能告诉我现在出了什么问题 @shivakrishna — 如果您将 XML 缩减为<xml><P class=MsoNormal></p></xml>
,那么它仍然会给出该错误。 必须引用属性值。您可能还有其他错误,但这是第一个错误。
哦,谢谢昆汀,我们可以删除那个“吗?”执行期间来自 p 标签(我想执行而不希望工作没有错误,因为除了 p 标签之外没有其他错误])【参考方案2】:
您的description
没有结束标记,并且其中的 CDATA 部分永远不会终止……尽管我希望它在文档末尾而不是在该元素的第三行数据上出错。
【讨论】:
感谢您的回复,是的,实际上我更新了结束标签的描述。但实际上在我的 xml 中没有 cdata 的结束标记。但是错误出现在标签上,请告诉我 p 标签有什么问题以及如何避免错误\
@shivakrishna — CDATA 部分仍未终止。 不要介意实际上我的 xml 中的任何 cdata 都没有结束标记,但一切正常。请关注 para 标记,因为 xml 中的所有内容都工作正常,但在我粘贴在上面第 150 列的 para 标记中,它显示错误。那么如何忽略此类错误以上是关于xml 解析错误:python 中格式不正确<invalid token>的主要内容,如果未能解决你的问题,请参考以下文章