[英]C# Extracting an XML data with public DTD
XML文件是使用公共DTD创建的。 XML可以具有不同的位置,因此,当我要读取XML文件时,会出现类似“找不到dtd文件”的错误。 在XML中设置的DTD路径取决于XML的位置,因此不理想的是在XML文件所在的位置创建DTD文件。
因此,我正在考虑使用新的DTD声明创建XML文件的副本,其中DTD路径设置为DTD所在的本地目录,但我不知道如何,并且不确定是否可以解决此问题我的问题。 我当前正在使用XmlDocument提取一些XMl数据。
我尝试在线搜索解决方案,但找不到任何解决方案。
任何帮助将不胜感激。
提前致谢。
我认为这必须起作用:
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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.