2013-04-21 14 views
2

我有50個XML文件,它們有不匹配的標記,我想用python修復它們。開標籤<names>不同於結束標籤</name>。任何人都可以引導我。使用python進行格式錯誤的XML修復

<breakfast_menu> 
     <food> 
     <names>Belgian Waffles</name> 
     <price>$5.95</price> 
     <calories>650</calories> 
    </food> 
    </breakfast_menu> 
+1

[這個答案](http://stackoverflow.com/a/399996/477878)可能會感興趣。 – 2013-04-21 06:03:45

+0

爲什麼你會得到這樣畸形的xml文件?是否有可能修復生成XML的程序? – xwang 2016-06-28 19:44:47

回答

3

BeautifulSoup做到這一點:

>>> from bs4 import BeautifulSoup 
>>> myxml = # Your posted XML 
>>> soup = BeautifulSoup(myxml,'xml') 
>>> print soup 
<?xml version="1.0" encoding="utf-8"?> 
<breakfast_menu> 
<food> 
<names>Belgian Waffles</names> 
<price>$5.95</price> 
<calories>650</calories> 
</food> 
</breakfast_menu> 

如果您正在尋找<name></name>

>>> for i in soup.findAll('names'): 
...  i.name = 'name' 
... 
>>> print soup 
<?xml version="1.0" encoding="utf-8"?> 
<breakfast_menu> 
<food> 
<name>Belgian Waffles</name> 
<price>$5.95</price> 
<calories>650</calories> 
</food> 
</breakfast_menu> 
+0

如何更改與結束標記相同的開始標記,而不是其他方式 – user1138880 2013-04-21 06:30:15

+0

BeautifulSoup在調用'BeautifulSoup'時無法直接執行此操作,但我已添加了這種方法。 – TerryA 2013-04-21 06:38:01

+0

非常感謝,讓我試試 – user1138880 2013-04-21 06:41:41