如何解决使用不同版本名称空间对XSD进行序列化/反序列化的方法?
有没有办法允许使用首选名称空间对XML进行序列化/反序列化,并在失败时使用替代方法?
更具体地说,我定义了一个XSD,其段如下所示。
<xs:schema targetNamespace="http://www.PrimaryNameSpaceV2.com"
xmlns="http://www.PrimaryNameSpaceV2.com"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
它为我生成了包含以下内容的类定义...
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute("MyObject",Namespace="http://www.PrimaryNameSpaceV2",AnonymousType=true)]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlRootAttribute("MyObject",Namespace="http://www.PrimaryNameSpaceV2")]
现在,当序列化包含以下内容的标头中的数据时,我没有任何问题
<xmlns="http://www.PrimaryNameSpaceV2.com">
这不足为奇。但是,当名称空间是先前版本时,出现意外内容时会出错。这对我来说也不足为奇,因为显然名称空间是不同的。 V2和V1。
<xmlns="http://www.PrimaryNameSpaceV1.com">
我希望能够使用PrimaryNameSpaceV2进行序列化和反序列化,如果PrimaryNameSpaceV2失败,请尝试使用PrimaryNameSpaceV1。但是我不确定是否可以通过创建全新的xsd以及一组全新的类定义来做到这一点。有没有简明的方法可以同时支持这些名称空间的两个版本? 抱歉,如果有一些基本的版本控制信息可支持此操作,但是我在查找此类操作的任何资源时遇到了麻烦。
解决方法
我建议您在进行任何其他处理之前将输入的XML转换为一致的格式,通常是通过在处理管道中添加XSLT步骤。同样,通过在输出管道上执行最后的后处理步骤来处理输出格式中的变化。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。