当使用Python的库存XML工具(例如xml.dom.minidomXML编写)时,文件总是会像
<?xml version="1.0"?>
[...]
虽然这是完全合法的XML代码,甚至建议使用标题,但我想摆脱它,因为我正在使用的程序之一存在问题.
我似乎无法找到合适的选项xml.dom.minidom,所以我想知道是否有其他包允许忽略标题.
干杯,
尼科
bob*_*nce 15
遗憾的是minidom,您没有选择省略XML声明.
但是,您始终可以通过调用toxml()文档的根元素而不是文本来自行序列化文档内容document.那么您将无法获得XML声明:
xml= document.documentElement.toxml('utf-8')
Run Code Online (Sandbox Code Playgroud)
...但是你也不会在根元素之外得到任何其他内容,例如DOCTYPE,或任何注释或处理指令.如果需要,请逐个序列化文档对象的每个子项:
xml= '\n'.join(node.toxml('utf-8') for node in document.childNodes)
Run Code Online (Sandbox Code Playgroud)
我想知道是否有其他软件包允许忽略标头.
DOM Level 3 LS 定义了一个xml-declaration可用于抑制它的配置参数.我所知道的唯一Python实现是pxdom,它在标准支持方面是彻底的,但根本不是很快.
如果你想使用minidom并保持'漂亮',那么这是一个快速/ hacky修复:
xml_without_declaration.py:
import xml.dom.minidom as xml
doc = xml.Document()
declaration = doc.toxml()
a = doc.createElement("A")
doc.appendChild(a)
b = doc.createElement("B")
a.appendChild(b)
xml = doc.toprettyxml()[len(declaration):]
print xml
Run Code Online (Sandbox Code Playgroud)