【发布时间】:2016-07-07 13:21:24
【问题描述】:
我在 Python 3.4 的 BeautifulSoup 4 使用的 xml 解析器中遇到了以下意外行为。解析 xml 样式表时,结束分隔符中的问号消失了:
输入:
BeautifulSoup('<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="myStyleSheet.xsl" type="text/xsl"?>','xml')
输出:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="myStyleSheet.xsl" type="text/xsl">
注意type="text/xsl"?> 是如何变成type="text/xsl"> 的。
另外,找到here 的示例也以同样的方式中断。
这是故意的吗?我应该报告错误吗?除了事后在正确的位置插入问号之外,还有什么方法可以防止这种情况发生吗?
【问题讨论】:
-
我不知道 BeautifulSoup 规范是怎么说的,但是如果您正在生成 HTML,则删除问号是正确的,如果您正在生成 XML,则不正确。
-
XML 解析器应该专门处理 XML。有趣的是,我尝试过的 HMTL 解析器(
html.parser和lxml)不要删除问号。 (但他们会做我不想要的其他事情) -
xml.etree.ElementTree 的作用与 lxml.etree 完全相同
标签: xml python-3.x beautifulsoup