【发布时间】:2011-05-31 18:28:16
【问题描述】:
每次我调用该方法时
XmlDocument.Save(fooFilepath);
它在 DOCTYPE 标记的末尾插入两个方括号,例如
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ARCXML SYSTEM "G:\ArcIMS\DTD\arcxml.dtd"[]>
有谁知道为什么会发生这种情况?我显然不希望这种情况发生。
【问题讨论】:
-
方括号是放置内部子集声明的地方。如果你没有这样的声明,括号是空的,可以省略。但是空括号并没有错。任何符合标准的 XML 解析器都应该能够处理生成的 doctype 声明,所以您唯一的问题是审美问题。
-
在检查了
XmlWriter.WriteDocType()实现之后,我很困惑为什么将internalSubset设置为null的新XDocumentType输出空方括号。就我而言,我正在写到 Response.Output。在调用Save()之前,我确认doc.DocumentType.InternalSubset为空。所有实现似乎都跳过了输出[],但在运行时它被某些东西写入XML。