2013-04-21 93 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