c# - 由于缺少 XSD 文件,无法反序列化 xml 文档

标签 c# xsd xml-serialization

我有一个类,我想将 XML-doc 反序列化为:

[XmlRoot(ElementName = "MyType", Namespace = "MyNamespace")]
public class MyClass : MyBase { }

[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42")]
[SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[XmlTypeAttribute(Namespace = "BaseNamespace")]
[XmlRootAttribute("MyBaseType", Namespace = "BaseNamespace", IsNullable = false)]
[GuidAttribute("8d9586ec-f263-48e2-ad47-53093430bce4")]
public class MyBase { }

反序列化时出现错误提示

XML schema file with metadata not found at AAA-Fachschema.xsd":null

这是一些简化的 Xml:

<?xml version="1.0" encoding="utf-8"?>
<!--some comments -->
<q1:MyType xsi:schemaLocation="http://www.adv-online.de/namespaces/adv/gid/6.0 NAS-Operationen.xsd" xmlns:q1="MyNamespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gco="http://www.isotc211.org/2005/gco" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:gts="http://www.isotc211.org/2005/gts" xmlns:ogc="http://www.adv-online.de/namespaces/adv/gid/ogc" xmlns:wfs="http://www.adv-online.de/namespaces/adv/gid/wfs" xmlns:gss="http://www.isotc211.org/2005/gss" xmlns="BaseNamespace">
</q1:MyType>

反序列化代码:

using (var reader = new XmlReader(theFile, new XmlReaderSettings { ValidationType = ValidationType.None }))
{
    var ser = new XmlSerializer(typeof(MyClass));
    var o = ser.Deserialize(reader);
}

但我完全不确定这个 Xsd 文件设置为由序列化程序加载的位置。

有谁知道在哪里为序列化程序设置此信息,或者更简单的方法是如何完全禁用检查?

最佳答案

听起来您缺少包含的模式,并且您提供的 xsd 中的 URL 似乎没有链接到可下载的模式。如果您尝试从 http://repository.gdi-de.org/schemas/adv/nas/6.0 下载架构,会发生什么情况?并从本地文件生成类?

看起来还有一整套子引用资料可供追查,但从我提供的链接开始应该会有帮助。

关于c# - 由于缺少 XSD 文件,无法反序列化 xml 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34919027/

相关文章:

python - 元素不是模式的元素

xml - 我可以在 XML 架构元素名称中使用正则表达式吗?

javascript - 使用标签和属性解析 xml

javascript - UpdatePanel 触发时图像不显示

c# - Raspberry Pi 2 型号 B - Mono C# PIN 编号

c# - 根据 MSDN,为什么 .NET 类 System.String 现在在三个不同的程序集中?

c# - 在 Monotouch 中正确使用 XMLRootAttribute

c# - 如何在C#中使用佳能EDSDK下载和录制视频?

java - 从多个文件复合的模式生成 JAX-B 类

c# - XMLSerializer反序列化——数组元素顺序