0

这让我困惑了一段时间,我无法弄清楚这里发生了什么。这是原始的 XML 文件:

<?xml version="1.0" encoding="UTF-8" ?>
<book>
  <meta>
    <title>Some Title</title>
    <creator>Another Author</creator>
    <language>en-US</language>
    ...
  </meta>
  <chapter>
    ...
  </chapter>
</book>

然后我读了文件:

with open(filename) as f :
    soup = BeautifulSoup(f);
    print(soup.root)

奇怪的是,它会转储以下内容:

<html><body><book>
<meta/>
<title>Some Title</title>
<creator>Some Author</creator>
<language>en-US</language>
...

那么为什么哦为什么<meta>汤中的标签是空的,而它不在原始 XML 文件中呢?(我可以发誓这仅在两周前有效,我也可以发誓我没有接触过脚本。我确实对 XML 文件进行了一些细微的更改,但我看不到相关性。)

4

1 回答 1

0

您正在 HTML 解析器中打开一个 XML 文件。BeautifulSoup 尝试修复它预期的 HTML 结构。

相反,使用 XML 解析器,或在 XML 模式下使用 BeautifulSoup

soup = BeautifulSoup(f, 'xml')

为此,您必须lxml安装。

lxml本身就是一个优秀的 XML 库。您还可以使用Python 附带的ElementTree库;lxml基于相同的 API,但具有更多功能。

于 2013-03-16T21:47:48.447 回答