我有多个xml文件,其中的标记没有正确关闭。他们经常被移到下一行。
我的XML
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
<item id='my-img' href='images/dp.jpg' media-type='image/jpeg'/
>
</note>
有没有像下面这样的Python方法可以将其转换为所需的XML?:
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
<item id='my-img' href='images/dp.jpg' media-type='image/jpeg'/>
</note>
我试过用美容素。但它似乎没有正确格式化。
我能想到的最简单的方法是完全删除换行符,加载xml并保存一个预定义的版本。默认的repr只修复标签,但保持格式不变。
from bs4 import BeautifulSoup as bs
with open("file.xml","r") as f:
xml_str = f.read(); # Load file
xml = bs(xml_str, "lxml") # parse file
with open("file.xml","w") as f:
f.write(repr(xml)) # write pretty file
注意:我们使用的是需要使用安装的lxml解析器
pip3 install lxml
编辑:无需删除换行
这完全取决于需要修复多少xml字段,以及其中是否有模式。从您举的例子来看,查找和替换可能更容易使用(例如使用正则表达式(。