C# 使用不同版本名称空间序列化/反序列化XSD的方法?

C# 使用不同版本名称空间序列化/反序列化XSD的方法?,c#,xml,xsd,C#,Xml,Xsd,是否有任何方法允许使用首选名称空间对XML进行序列化/反序列化,并在失败时使用替代名称空间 更具体地说,我定义了一个XSD,其段如下 <xs:schema targetNamespace="http://www.PrimaryNameSpaceV2.com" xmlns="http://www.PrimaryNameSpaceV2.com" xmlns:xs="http://www.w3.org/2001/XMLSchema&q

是否有任何方法允许使用首选名称空间对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">
现在,我在序列化包含以下内容的标题的数据时没有问题

<xmlns="http://www.PrimaryNameSpaceV2.com">

这并不奇怪。但是,当名称空间是以前的版本时,我会收到意外内容的错误。这对我来说也不奇怪,因为很明显名称空间是不同的。V2对V1

<xmlns="http://www.PrimaryNameSpaceV1.com">

我希望能够使用PrimaryNameSpaceV2进行序列化和反序列化,如果PrimaryNameSpaceV2失败,请尝试使用PrimaryNameSpaceV1。但我不确定除了创建一个全新的xsd和一整套新的类定义之外,是否还有其他方法可以做到这一点。是否没有简洁的方法支持这两个名称空间版本?
如果有一些基本的版本控制信息支持此操作,我深表歉意,但我在查找此类操作的任何资源时遇到困难。

我建议在执行任何其他处理之前,将输入XML转换为一致的格式,通常是通过向处理管道添加XSLT步骤。类似地,通过输出管道上的最后一个后处理步骤来处理输出格式的变化。

我建议在进行任何其他处理之前,将输入XML转换为一致的格式,通常是通过向处理管道中添加XSLT步骤。类似地,通过输出管道上的最后一个后处理步骤来处理输出格式的变化。

您可以使用xml linq。您可以使用XDocument doc=XDocument.Load(文件名)获取默认名称空间;XElement根=文档根;XNameSpace ns=root.GetDefaultNameSpace();您可以使用xml linq。您可以使用XDocument doc=XDocument.Load(文件名)获取默认名称空间;XElement根=文档根;XNameSpace ns=root.GetDefaultNameSpace();
<xmlns="http://www.PrimaryNameSpaceV1.com">