XmlDeclaration 是用于创建 XML 声明行的类,必须作为 XmlDocument 的第一个子节点添加;创建需调用 CreateXmlDeclaration 并用 AppendChild 首先插入,参数包括 version(如"1.0")、encoding(如"utf-8")和 standalone(如"yes"或 null)。
XmlDeclaration 是 C# 中 System.Xml 命名空间下的一个类,专门用来创建 XML 文档最开头的声明行,也就是形如 的那一行。它本身不是元素节点,而是文档级元信息,必须作为 XmlDocument 的第一个子节点添加,否则生成的 XML 文件可能不符合规范,部分解析器会报错或警告。
创建声明需要三步:调用 CreateXmlDeclaration 方法生成对象,再用 AppendChild 添加到文档根部。注意:必须在添加任何其他节点(比如根元素)之前完成这一步,否则声明会被插入到中间位置,XML 就不合法了。
version:几乎固定写 "1.0",这是当前唯一广泛支持的版本encoding:指定文本编码,常用 "utf-8"(推荐)或 "gb2312" 等;要和后续保存/读取时的编码一致standalone:可为 "yes"(默认无外部 DTD)、"no"(依赖外部定义),也可传 null(省略该属性)下面是最简可用的写法:
XmlDocument doc = new XmlDocument();
XmlDocument 只能有一个声明,多次 AppendChild 同一声明或多个声明会抛异常doc.Load("xxx.xml") 读取时,声明已自动解析并存在 doc.FirstChild 中,可直接访问或修改"utf-8",但保存时用 Encoding.GetEncoding("gbk"),会导致乱码——保存时应使用与声明一致的编码,或让 Save() 自动按声明处理(默认行为)从已加载的文档中获取声明:
XmlDeclaration existingDecl = doc.FirstChild as XmlDeclaration;如需修改,不能直接改属性,得新建一个声明替换:
XmlDeclaration newDecl = doc.CreateXmlDeclaration("1.0", "utf-8", "yes");不复杂但容易忽略
来电咨询