BeautifulSoup(bs4)XML解析器删除html实体

时间:2016-04-13 12:00:47

标签: python xml beautifulsoup html-entities bs4

看看这个例子:

# xml parser
bs4.BeautifulSoup('<price>&pound;4</price>', 'xml')

# prints:
<?xml version="1.0" encoding="utf-8"?>
<price>4</price>
# html (lxml) parser
bs4.BeautifulSoup('<span>&pound;4</span>', 'lxml')

# prints:
<html><body><span>£4</span></body></html>

注意£标志。为什么XML解析器会删除它?我应该怎么做才能在输出中使用它?我需要xml解析,因为该文档包含一些由lxml解析器错误解析的配对标记(例如<link>)。

1 个答案:

答案 0 :(得分:0)

&pound;不是标准的XML实体 - 例如使用&#163;&pound;是一个HTML实体,无法在DTD中声明(或嵌入)它们的情况下使用它。

修改:例如参见How do I define HTML entity references inside a valid XML document?