gpt4 book ai didi

c# - 从 xml 模式生成的 CS 类

转载 作者:太空宇宙 更新时间:2023-11-03 16:39:32 29 4
gpt4 key购买 nike

我确实使用 xsd.exe(VS 2010 命令提示符)生成了 C# 类表单 scham,但是当我将类序列化为 xml 文件时,在输出文件中我没有模式条目。

序列化的 xml:

<?xml version="1.0" encoding="utf-16"?>
<Dokumenty xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" idSystemuLokalnego="ASD" dataUtworzenia="0001-01-01T00:00:00">
<Wniosek>
<Beneficjent />
</Wniosek>

当我尝试使用代码对架构进行验证时:

        //Serilalize xml to string
StringWriter sw = new StringWriter();
XmlTextWriter xw = new XmlTextWriter(sw);
x.Serialize(xw, doc);
String xml = sw.ToString();

StringReader sr = new StringReader(xml);
XmlTextReader xtr = new XmlTextReader(sr);
XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas.Add("", "schemas\\SimWniosekApl_v2.0.xsd");
settings.ValidationType = ValidationType.Schema;

//XmlReader reader = XmlReader.Create(xtr);
XmlDocument document = new XmlDocument();
document.Load(xtr);

ValidationEventHandler eventHandler = new ValidationEventHandler(ValidationHandler);

// the following call to Validate succeeds.
document.Validate(eventHandler);

它失败了,异常: 附加信息:文档中的 XmlSchemaSet 为空或其中没有架构。在调用 Validate 之前提供架构信息。

我做错了什么?

最佳答案

您需要在创建阅读器时应用 XmlReaderSettings。

该代码对设置没有任何作用。在创 build 置之前,已经创建了阅读器。该代码只是创 build 置,然后忘记它们。

    StringReader sr = new StringReader(xml); 
//XmlTextReader xtr = new XmlTextReader(sr);
XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas.Add("", "schemas\\SimWniosekApl_v2.0.xsd");
settings.ValidationType = ValidationType.Schema;

XmlReader reader = XmlReader.Create(xtr,settings);
XmlDocument document = new XmlDocument();
document.Load(reader);

ValidationEventHandler eventHandler = new ValidationEventHandler(ValidationHandler);
document.Validate(eventHandler);

这里有一个完整的例子:
http://msdn.microsoft.com/en-us/library/ms162371.aspx

关于c# - 从 xml 模式生成的 CS 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8093029/

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