C#中的DTD验证

时间:2012-08-14 17:25:31

标签: c# dtd

我有一个包含以下DOCTYPE的XML文件:

<!DOCTYPE localdtd PUBLIC "-//local host//local dtd - XML//EN" "localdtd.dtd"[]>

我正在尝试使用以下代码验证位于我的根文件夹中的localdtd.dtd的XML

XmlDocument xml = new XmlDocument();

using (var xmlreader = XmlReader.Create(
                          new StringReader(xmlcontent), 
                          new XmlReaderSettings() 
                          { 
                             ProhibitDtd = false, ValidationType = ValidationType.DTD
                          }   ) )
{
            xml.Load(xmlreader); 
} 

我收到以下错误

找不到文件'C:\ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ localdtd.dtd'。

我们可以指定localdtd.dtd文件的位置吗?

2 个答案:

答案 0 :(得分:1)

下面:

  

<!DOCTYPE localdtd PUBLIC "-//local host//local dtd - XML//EN" "localdtd.dtd"[]>

我相信您可以使用以下方式指定直接路径:

  

<!DOCTYPE localdtd PUBLIC "-//local host//local dtd - XML//EN" @"C:\MYLOCATION\localdtd.dtd"[]>

或尝试添加:

  

XmlResolver.ResolveUri(@“C:\ MYLOCATION \ localdtd.dtd”,null)

XmlReaderSettings

答案 1 :(得分:0)

对于相对路径使用

<!DOCTYPE localdtd PUBLIC "-//local host//local dtd - XML//EN" "~/localdtd.dtd"[]>