XmlDocument.LoadXml上的坑-创新互联
XmlDocument加载xml文档,可以用Load加载实体文件,也可以用LoadXml加载字符串,但是使用的时候有个小坑需要注意。先来看以下几行代码:
创新互联建站长期为上千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为杂多企业提供专业的成都网站建设、成都网站设计,杂多网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。var xml = new XmlDocument(); xml.Load("test.xml"); // <--- 方法1 xml.LoadXml(File.ReadAllText("test.xml", Encoding.UTF8)); // <--- 方法2 xml.LoadXml(Encoding.UTF8.GetString(File.ReadAllBytes("test.xml"))); // <--- 方法3
运行一下,会发现方法1和2没什么区别,但方法3会报错:
System.Xml.XmlException: 根级别上的数据无效。 第 1 行,位置 1。
原因出在UTF8的BOM上,Windows系统下,UTF8文件保存会在头部保存3个字节,EF BB BF,如果按文本方式处理文件(File.ReadAllText),得到的字符串是不会包含这3个不可见字符的,但如果用二进制方式处理文件再转字符串(File.ReadAllBytes再GetString),得到的字符串就有问题了,导致XmlDocument认为XML格式不合法。
对本地文件来说,一般不太可能用到方法3,但是如果是从远程接收文件,就会遇到与方法3类似的情况了,此时需要识别一下,如果有BOM,要去除掉再转化字符串。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
分享题目:XmlDocument.LoadXml上的坑-创新互联
网址分享:http://abwzjs.com/article/ceoohc.html