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