我知道有许多关于XML验证中“未找到元素”错误的线程,但我发帖是因为我的问题稍有不同。
在.Net v4.5上运行良好的代码,在将框架升级到v4.6.1后,对xml文件中每个XML元素都会出现此错误。降级后,我发现错误从.Net框架v4.5.2开始发生。以下是我的代码: XML - Book.xml
运行代码时,回调函数会针对四个XML元素(book、title、author和isbn)抛出验证错误(找不到元素)。希望能够提供帮助来解决这个问题。谢谢。
在.Net v4.5上运行良好的代码,在将框架升级到v4.6.1后,对xml文件中每个XML元素都会出现此错误。降级后,我发现错误从.Net框架v4.5.2开始发生。以下是我的代码: XML - Book.xml
<?xml version="1.0" ?>
<!DOCTYPE book SYSTEM "Book.dtd">
<book>
<title>The Lord of the Rings</title>
<author>J.R.R. Tolkien</author>
<isbn>1572810556</isbn>
</book>
DTD - Book.dtd
<!ELEMENT book (title, author, isbn)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT isbn (#PCDATA)>
C#函数
public static void ReadXMLwithDTD()
{
// Set the validation settings.
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.DTD;
settings.DtdProcessing = DtdProcessing.Parse;
settings.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);
settings.IgnoreWhitespace = true;
// Create the XmlReader object.
XmlReader reader = XmlReader.Create("Book.xml", settings);
// Parse the file.
while (reader.Read())
{
Console.WriteLine("{0}, {1}: {2} ", reader.NodeType, reader.Name, reader.Value);
}
}
private static void ValidationCallBack(object sender, ValidationEventArgs e)
{
if (e.Severity == XmlSeverityType.Warning)
Console.WriteLine("Warning: Matching schema not found. No validation occurred." + e.Message);
else // Error
Console.WriteLine("Validation error: " + e.Message);
}
运行代码时,回调函数会针对四个XML元素(book、title、author和isbn)抛出验证错误(找不到元素)。希望能够提供帮助来解决这个问题。谢谢。
]>
指环王
J.R.R.托尔金
1572810556
- Vishal