簡體   English   中英

從 .Net v4.5 升級到 .Net v4.5.2 后,元素未聲明驗證錯誤

[英]Element is not declared validation error post upgrading from .Net v4.5 to .Net v4.5.2

我知道已經有許多現有線程用於 XML 驗證的“找不到元素”錯誤,但我發布此消息是因為我的問題略有不同。

我的代碼運行良好,直到它在 .Net v4.5 上運行。 將框架升級到 v4.6.1 后,我開始為我的 xml 文件中的每個 XML 元素收到此錯誤。 降級后,我發現錯誤是從 .Net framework 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 元素(書籍、標題、作者和 isbn)拋出驗證錯誤(未找到元素)。

任何解決此問題的幫助將不勝感激。

謝謝,

我參加聚會有點晚了,但我想我已經通過在settings.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);之前添加以下代碼找到了解決方案

settings.XmlResolver = new XmlUrlResolver();

從 .NET Framework 4.5.2 開始,此設置的默認值為 null。

參考: https : //msdn.microsoft.com/en-us/library/system.xml.xmlreadersettings.xmlresolver(v=vs.110).aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM