【发布时间】:2014-03-13 00:14:14
【问题描述】:
在我的 xml 中有这一行
<url>http://www.modeluxproperties.com/?act=list_web&m=search&purpose=sale&project=&type=32&beds=&lop=&Submit.x=37&Submit.y=20</url>
当我这样做时:
self.doc=etree.parse(xmlFile)
我在那一行遇到了这个错误:
lxml.etree.XMLSyntaxError: EntityRef: expecting ';', line 5, column 56
【问题讨论】:
-
它将 URL 中的 & 符号解析为 XML 实体。我认为 & 符号应该是 URL 编码的——尝试用 '&' 替换所有的 '&'
-
@Kasapo 谢谢,请写一个答案接受它
-
我个人怀疑这是否足够。例如,
&lt;、&gt;、... 需要翻译为 wel(转为&lt;和&gt;)。大多数编程语言都有库可以做到这一点。可能也是python,虽然我不知道这些。 -
@CommuSoft - URL 周围的“”是完全有效的 XML 字符,不应将它们表示为 XML 实体。原因是 XML 解析器将
<url>解析为 XML 元素而不是纯文本(这是使用 XML 实体所做的)。但是,如果尖括号应该在 URL 中或 XML 元素中的任何位置,那么是的,它们也需要被编码为 XML 实体。使用 URL 编码或 XML 编码函数/库应该注意编码 & 以及其他无效的 XML 实体。