【问题标题】:XML parser removes processing instruction close delimiter's question markXML 解析器删除处理指令关闭分隔符的问号
【发布时间】: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"?&gt; 是如何变成type="text/xsl"&gt; 的。

另外,找到here 的示例也以同样的方式中断。

这是故意的吗?我应该报告错误吗?除了事后在正确的位置插入问号之外,还有什么方法可以防止这种情况发生吗?

【问题讨论】:

  • 我不知道 BeautifulSoup 规范是怎么说的,但是如果您正在生成 HTML,则删除问号是正确的,如果您正在生成 XML,则不正确。
  • XML 解析器应该专门处理 XML。有趣的是,我尝试过的 HMTL 解析器(html.parserlxml不要删除问号。 (但他们会做我不想要的其他事情)
  • xml.etree.ElementTree 的作用与 lxml.etree 完全相同

标签: xml python-3.x beautifulsoup


【解决方案1】:

来自 2016 年 7 月 19 日发布的 BeautifulSoup 4.5.0 版的更新日志:

"* 更正了 XML 处理指令的处理。[bug=1504393]"

【讨论】:

    猜你喜欢
    • 2022-11-29
    • 2012-11-17
    • 1970-01-01
    • 2023-03-16
    • 2016-12-27
    • 2019-11-29
    • 2017-02-28
    • 2015-06-07
    • 2013-11-05
    相关资源
    最近更新 更多