2014-07-19 56 views
1

我正在使用BeautifulSoup對XML文件進行更改,但我注意到如果我在文件中讀入,將其放入構造函數中,然後將其吐出而不做任何更改,BeautifulSoup已經做出了一些更改到代碼。例如,標籤和屬性名稱全部爲小寫,並且標籤中屬性的順序發生了變化。Python:BeautifulSoup在閱讀時自動更改文本?

我知道實際上這不應該是一個問題,但必須讀取XML文件的程序是非常挑剔的,不會接受這些更改。我發現我可以在沒有BeautifulSoup的情況下使用普通的字符串操作進行更改,但這很不方便。

有沒有辦法阻止BeautifulSoup在閱讀XML時對其進行更改?

+0

BeautifulSoup是一個HTML解析器。不要在XML上使用它。 – Ryan

+1

@minitech不完全準確。通過安裝xml解析器庫,BS可以用於XML解析 - http://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-a-parser – shaktimaan

+0

包括您使用的代碼,示例輸入和預期的輸出。 – shaktimaan

回答

1

BeautifulSoup通過將XML解析爲它理解的對象來工作。當它寫出XML時,它將數據寫入對象中,而不是被解析的原始字符串。

一個解決方案是使用BeautifulSoup解析XML,然後使用生成的API自定義編寫XML以滿足程序的要求。您可以製作custom pretty printeriterate through the elements,手動縮進並格式化數據以滿足您的需求。