XmlDocument.Save()在doctype声明中插入空方括号
每次我打电话给方法
XmlDocument.Save(fooFilepath);
它在DOCTYPE标签的末尾插入两个方括号,例如
有谁知道为什么会这样? 我显然不希望这种情况发生。
这是DOCTYPE声明的正常(和可选)部分 。
DTD包含文档的任何内部子集声明。
XmlDocument
使用的基础读取器(使用XmlTextReader
)不区分具有空内部子集的文档和没有指定内部子集的文档,因此它将为两种情况返回InternalSubset == ""
。
然后,当调用XmlDocument.Save()
时,它会看到InternalSubset
的空字符串并尽职地写入一个空的内部子集: []
。
不幸的是, XmlDocument.DocumentType.InternalSubset
是readonly,所以你不能将它设置为null。 你可以这样做:
-
使用较低级别的
XmlTextWriter.WriteDocType()
来获得更多控制权。 -
使用
XDocument
,您可以在其中设置XDocument.DocumentType.InternalSubset = null
。