1

我有一个带有以下 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 文件的位置吗?

4

2 回答 2

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.

于 2012-08-14T17:55:45.003 回答
0

对于相对路径使用

<!DOCTYPE localdtd PUBLIC "-//local host//local dtd - XML//EN" "~/localdtd.dtd"[]>
于 2014-06-17T07:31:09.547 回答