2012-08-28 11 views
12

Piszę skrypt, który edytuje plik XML z BeautifulStoneSoup, ale biblioteka konwertuje wszystkie znaczniki na małe litery. Czy istnieje opcja na zachowanie sprawy?Jak zachować znaczniki wielkości liter w BeautifulSoup.BeautifulStoneSoup?

import BeautifulSoup  
xml = "<TestTag>a string</TestTag>"  
soup = BeautifulSoup.BeautifulStoneSoup(xml, markupMassage=False)  
print soup.prettify() # or soup.renderContents() 
#prints 
>>> <testtag>a string</testtag> 
#instead of the expected 
>>> <TestTag>a string</TestTag> 

Odpowiedz

15

Można użyć Beautiful Soup 4, w następujący sposób (wymaga biblioteki XML lxml):

In [10]: from bs4 import BeautifulSoup 

In [11]: xml = "<TestTag>a string</TestTag>" 

In [12]: soup = BeautifulSoup(xml, "xml") 

In [13]: print soup 
<?xml version="1.0" encoding="utf-8"?> 
<TestTag>a string</TestTag> 

In [14]: 
+1

Dzięki wykonany upgrade i działa świetnie. Dla przyszłych czytelników: uruchom 'pip install BeautifulSoup4' nie' pip install beautifulsoup --upgrade' – TankorSmash

+1

Warto wspomnieć, że wymaga biblioteki 'xml', a nie' lxml', co jest polecane przez beautifulsoup, jeśli uruchomisz ją bez specyfikacji. 'lxml' nie obsługuje wielkości liter. –

+0

@KeithSmiley: Tak, używając 'soup = BeautifulSoup (xml," lxml ")', używany jest parser HTML lxml. Zobacz http://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-a-parser. – mzjn

Powiązane problemy