【问题标题】:C# Extracting an XML data with public DTDC# 使用公共 DTD 提取 XML 数据
【发布时间】:2016-08-15 17:43:39
【问题描述】:

XML 文件是使用公共 DTD 创建的。 XML 可以有不同的位置,因此当我要读取 XML 文件时,我会收到类似“找不到 dtd 文件”的错误。在 XML 中设置的 DTD 路径取决于 XML 的位置,在 XML 文件所在的位置创建 DTD 文件并不理想。

所以我正在考虑使用新的 DTD 声明创建 XML 文件的副本,其中 DTD 路径设置为 DTD 所在的本地目录,但我不知道如何,我不确定是否这将解决我的问题。我目前正在使用 XmlDocument 来提取一些 XML 数据。

我尝试在网上搜索解决方案,但找不到任何解决问题的方法。

任何帮助将不胜感激。

提前致谢。

【问题讨论】:

    标签: c#


    【解决方案1】:

    我认为这必须工作:

        private string msValidationError;
        public string validateXML(XmlTextReader reader, string sDTDPath)
        {
            System.Xml.XmlReaderSettings oSettings = new System.Xml.XmlReaderSettings();
            oSettings.ValidationType = ValidationType.DTD;
            oSettings.ValidationEventHandler += ValidationCallBack;
            System.IO.Directory.SetCurrentDirectory(sDTDPath); //Set dtd folder             
    
            System.Xml.XmlReader oReader = System.Xml.XmlReader.Create(reader, oSettings);
            try
            {
                msValidationError = "";
                while (oReader.Read())
                {
                }
                oReader.Close();
                if (!string.IsNullOrEmpty(msValidationError))
                {
                    return string.Format("Invalid xml! {0}",msValidationError);
                }
            }
            catch (Exception ex)
            {
                return "Invalid xml.";
            }
            finally
            {
                try
                {
                    oReader.Close();
                }
                catch (Exception exI)
                {                    
                }
            }
            return msValidationError;
        }
    
        private void ValidationCallBack(object sender, System.Xml.Schema.ValidationEventArgs args)
        {   
            msValidationError = msValidationError + args.Message;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-08
      • 1970-01-01
      相关资源
      最近更新 更多