【发布时间】:2016-03-21 11:28:27
【问题描述】:
我正在编写一些代码来读取包含 XML 声明的 XML 片段,例如<?xml version="1.0" encoding="utf-8"?> 并解析编码。从MSDN,我应该可以这样做:
var nt = new NameTable();
var mgr = new XmlNamespaceManager(nt);
var context = new XmlParserContext(null, mgr, null, XmlSpace.None);
var reader = new System.Xml.XmlTextReader(@"<?xml version=""1.0"" encoding=""UTF-8""?>",
System.Xml.XmlNodeType.XmlDeclaration, context);
但是,我在调用 System.Xml.XmlTextReader 构造函数时收到了一个 System.Xml.XmlException 并带有一条错误消息:
部分内容不支持 XmlNodeType XmlDeclaration 解析。
我已经在引号中搜索了这个错误 - 找到的结果恰好为零(编辑:现在有一个结果:这篇文章) - 并且没有引号,这不会产生任何有用的信息。我还查看了MSDN for the XmlNodeType,并没有说明它不受支持。
我在这里缺少什么? 如何从 XML 声明片段中获取 XmlTextReader 实例?
注意,我的目标只是确定部分构建的 XML 文档的编码,我假设它至少包含一个声明节点;因此,我正在尝试获取reader.Encoding。如果有其他方法可以做到这一点,我愿意接受。
目前,我正在使用正则表达式手动解析声明,这不是最好的方法。
【问题讨论】:
标签: c# .net xml parsing encoding