gpt4 book ai didi

c# - 从 .Net v4.5 升级到 .Net v4.5.2 后未声明元素验证错误

转载 作者:行者123 更新时间:2023-11-30 16:03:22 25 4
gpt4 key购买 nike

我知道已经有很多关于 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

关于c# - 从 .Net v4.5 升级到 .Net v4.5.2 后未声明元素验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36460672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com