当我导入和导出xml而不对xml进行任何修改时,输出会发生显着变化。
我正在使用beautifulsoup,这是我正在使用的代码示例。
soup = BeautifulSoup(open('/Users/bdon/envtest.xml', 'r'), 'lxml')
with open('/Users/bdon/envmod.xml', "w") as f:
f.write(soup.prettify())
这是我要导入的xml:
<?xml version="1.0"?>
<config>
<apps>
<app name="apache-common">
<key name="max" value="400"/>
</app>
<app name="epci">
<key name="instance.type" value="apachecommon"/>
<key name="aoverride.enabled" value="true"/>
</app>
输出:
<?xml version="1.0"?>
<html>
<body>
<config>
<apps>
<app name="apache-common">
<key name="max" value="400">
</key>
</app>
<app name="epci">
<key name="instance.type" value="apachecommon">
</key>
<key name="aoverride.enabled" value="true">
</key>
</app>
问题:
为什么会发生这种情况,我该如何解决?
答案 0 :(得分:2)
在构造函数中指定了lxml
HTML解析器。将构造函数调用更改为:
soup = BeautifulSoup(open('/Users/bdon/envtest.xml', 'r'), 'xml')
答案 1 :(得分:0)
如果您使用'html.parser'
,那么BeautifulSoup
将不会更改您的代码格式。
<强>演示强>
from bs4 import BeautifulSoup
content = '''
<?xml version="1.0"?>
<config>
<apps>
<app name="apache-common">
<key name="max" value="400"/>
</app>
<app name="epci">
<key name="instance.type" value="apachecommon"/>
<key name="aoverride.enabled" value="true"/>
</app>
</apps>
</config>'''
soup = BeautifulSoup(content, "html.parser")
print(soup)
<强>输出强>
<?xml version="1.0"?>
<config>
<apps>
<app name="apache-common">
<key name="max" value="400"></key>
</app>
<app name="epci">
<key name="instance.type" value="apachecommon"></key>
<key name="aoverride.enabled" value="true"></key>
</app>
</apps>
</config>