当前位置:  开发笔记 > 编程语言 > 正文

.NET XmlDocument:保存后为什么DOCTYPE会发生变化?

如何解决《.NETXmlDocument:保存后为什么DOCTYPE会发生变化?》经验,为你挑选了1个好方法。

我使用.NET XmlReader打开XML文件并将文件保存在另一个文件名中,似乎DOCTYPE声明在两个文件之间发生了变化.虽然新保存的文件仍然是有效的XML,但我想知道它为什么坚持要更改原始标记.

Dim oXmlSettings As Xml.XmlReaderSettings = New Xml.XmlReaderSettings()
oXmlSettings.XmlResolver = Nothing
oXmlSettings.CheckCharacters = False
oXmlSettings.ProhibitDtd = False
oXmlSettings.IgnoreWhitespace = True

Dim oXmlDoc As XmlReader = XmlReader.Create(pathToOriginalXml, oXmlSettings)
Dim oDoc As XmlDocument = New XmlDocument()
oDoc.Load(oXmlDoc)
oDoc.Save(pathToNewXml)

以下(原始文件中):


成为(注意结尾处的[]字符):


Maurice Flan.. 8

设置XmlDocument.XmlResolver = null时,System.Xml中存在错误.解决方法是创建自定义XmlTextWriter:

    private class NullSubsetXmlTextWriter : XmlTextWriter
    {
        public NullSubsetXmlTextWriter(String inputFileName, Encoding encoding)
            : base(inputFileName, encoding)
        {
        }
        public override void WriteDocType(string name, string pubid, string sysid, string subset)
        {
            if (subset == String.Empty)
            {
                subset = null;
            }
            base.WriteDocType(name, pubid, sysid, subset);
        }
    }

在您的代码中,创建一个新的NullSubsetXmlTextWriter(pathToNewXml,Encoding.UTF8)并将该对象传递给oDoc.Save()方法.

以下是Microsoft支持案例,您可以在其中阅读有关解决方法的内容(它描述了解决方法但未提供代码).



1> Maurice Flan..:

设置XmlDocument.XmlResolver = null时,System.Xml中存在错误.解决方法是创建自定义XmlTextWriter:

    private class NullSubsetXmlTextWriter : XmlTextWriter
    {
        public NullSubsetXmlTextWriter(String inputFileName, Encoding encoding)
            : base(inputFileName, encoding)
        {
        }
        public override void WriteDocType(string name, string pubid, string sysid, string subset)
        {
            if (subset == String.Empty)
            {
                subset = null;
            }
            base.WriteDocType(name, pubid, sysid, subset);
        }
    }

在您的代码中,创建一个新的NullSubsetXmlTextWriter(pathToNewXml,Encoding.UTF8)并将该对象传递给oDoc.Save()方法.

以下是Microsoft支持案例,您可以在其中阅读有关解决方法的内容(它描述了解决方法但未提供代码).

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有