2012-08-28 17 views
12

मैं एक ऐसी स्क्रिप्ट लिख रहा हूं जो BeautifulStoneSoup के साथ एक XML फ़ाइल संपादित करता है, लेकिन लाइब्रेरी सभी टैग को कम मामले में परिवर्तित करती है। क्या मामला बचाने के लिए कोई विकल्प है?सुंदरSoup.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> 

उत्तर

15

आप Beautiful Soup 4 इस्तेमाल कर सकते हैं इस प्रकार है (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

धन्यवाद, उन्नयन बना दिया है और यह बहुत अच्छा काम करता है। भावी पाठकों के लिए: 'पीआईपी स्थापित करें सुंदरसूप 4' 'पाइप इंस्टॉल सुन्दरसूप - अपग्रेड' – TankorSmash

+1

उल्लेख करने के लायक है कि इसे 'xml' लाइब्रेरी की आवश्यकता है, न कि' lxml' जो सुंदरताप की सिफारिश करता है यदि आप इसे बिना किसी विनिर्देश के चलाते हैं। 'एलएक्सएमएल' मामले को बनाए रखता नहीं है। –

+0

@ किथस्मिली: हां, 'सूप = सुंदर सूप (एक्सएमएल, "एलएक्सएमएल") का उपयोग करते समय, एलएक्सएमएल का एचटीएमएल पार्सर का उपयोग किया जाता है। Http://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-a-parser देखें। – mzjn

संबंधित मुद्दे