gpt4 book ai didi

c# - 为什么我在有效的 XML 上收到 XmlException?

转载 作者:数据小太阳 更新时间:2023-10-29 02:08:47 24 4
gpt4 key购买 nike

在测试接受字符串并将该字符串作为属性添加到 XElement(将当前时间作为值)的方法的过程中。要使用 XElement.SetAttributeValue(XName name, object value)(我知道添加/更新 XElement 属性的唯一方法),我正在使用 XName.Get 将提供的字符串转换为 XName。

我遇到的问题是 XName.Get (堆栈跟踪显示它来自 System.Xml.XmlConvert.VerifyNCName)正在抛出 XmlException在某些情况下,不允许声明某些字符。一个例子是 0x02FF (˱)。我没想到这个字符是允许的,但是the XML specification似乎说 0x00F8 到 0x02FF 的整个范围都是有效的。

我是在有效字符上遇到了这个异常,还是我误解了规范?

最佳答案

.NET Framework 4 和 .NET Framework 4.5 中的 AFAIR Xml 堆栈基于 Xml 规范的第 4 版而非第 5 版。当您查看此规范时,您会注意到并非所有有效字符都允许出现在名称中。特别看看this看看多么 Letter是,您会看到 [0x02C2-0x0385] 范围内的字符被排除在外。

此外,.NET Framework 4 和 4.5 中的 Xml 堆栈没有移至第 5 版的原因是由于字符范围的变化,相同的 Xml 文档可能有效或无效(这实际上是您遇到的问题)取决于处理器而不是文档本身(符合第 5 版的 Xml 文档仍然可以有 1.0 版)。因此,有效文档(符合第 5 版)将被旧的解析器视为无效而拒绝。反之亦然。如果支持第 5 版的 Xml 解析器收到一个名称中包含字符的文档,该字符之前无效但在第 5 版中有效,则无法判断该文档是否应该被拒绝,因为它应该是第 5 版之前的文档版本并且格式错误或者它是第 5 版文件并且应该被接受。

关于c# - 为什么我在有效的 XML 上收到 XmlException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14384666/

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