0
这一直困惑我一会儿,我无法弄清楚这是怎么回事。这是原来的XML文件:Python和BeautifulSoup洗牌我的标签?
<?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文件进行了一些细微的修改,但是我没有看到相关性。)
哎,现在工作了!但为什么过去这不会发生?只是愚蠢的运气?现在你提出了lxml,我实际上是重写脚本来使用lxml并转储BeautifulSoup。那时我遇到了这个问题,因为我想比较输出并确保它们是相同的。 – Jens 2013-03-16 21:50:57
@Jens:BeautifulSoup一直试图尽可能最好地修复HTML,但是输出可能会因版本不同而不同。 – 2013-03-16 21:55:55
“试图修复”的部分是有道理的,但什么是破坏...哦,我碰巧使用相同的名称“元”,不是吗?!这就是解析器的混淆,它关闭了标签,将孩子移出。如果我以不同的方式命名标签,这不会显示?! – Jens 2013-03-16 21:58:33