首页新闻找找看学习计划

通过XmlDocument修改带有DOCTYPE的xml文件遇到问题

0
悬赏园豆:100 [待解决问题]

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>

......

</hibernate-configuration>

这样一个带DOCTYPE的xml,怎么加载到 xmldocument

我这样写不行。
        public static XmlDocument LoadXML(string strXmlFile)
        {
            XmlDocument xmlDocument = new XmlDocument();
            try
            {
                XmlReaderSettings settings = new XmlReaderSettings();
                settings.IgnoreComments = false;                            //忽略注释
                settings.DtdProcessing = DtdProcessing.Parse;  //分析DTD
                XmlReader reader = XmlReader.Create(strXmlFile, settings);
                xmlDocument.Load(reader);
                reader.Close();
            }
            catch{  }
            return xmlDocument;
        }
或者把上面2句带注释的去掉也不行。   求解决方法 

BBDN的主页 BBDN | 初学一级 | 园豆:104
提问于:2016-07-21 10:24
< >
分享
所有回答(3)
0

你有保存吗 需要调用config.Save();

如果你是修改的是config的值记得刷新节点,不然在下次程序启动之前还是原来的值

System.Configuration.ConfigurationManager.RefreshSection("节点名");

微风吹过12x | 园豆:73 (初学一级) | 2016-07-21 11:45

都不等保存,xmldocument.load()的时候就报错了

支持(0) 反对(0) BBDN | 园豆:104 (初学一级) | 2016-07-21 12:35
0

带DOCTYPE的Xml是可以用XmlDocument去load的,出错的原因应该是其他问题。

胜天半招 | 园豆:686 (小虾三级) | 2016-07-21 13:40

你可以找个hibernate的xml试试就知道了 。就是DOCTYPE的问题,我试过多次了

支持(0) 反对(0) BBDN | 园豆:104 (初学一级) | 2016-07-21 15:54
0

加个这玩意儿试试

settings.ProhibitDtd = false;

起个昵称真难 | 园豆:202 (菜鸟二级) | 2016-07-22 12:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册