Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从多个名称空间获取XmlSerializer反序列化属性?_C#_Xml_Xml Serialization - Fatal编程技术网

C# 如何从多个名称空间获取XmlSerializer反序列化属性?

C# 如何从多个名称空间获取XmlSerializer反序列化属性?,c#,xml,xml-serialization,C#,Xml,Xml Serialization,我有一个来自第三方的模式,我使用Xsd2Code生成了c#对象(其他选项,如xsd.exe、xmlspy等,要么崩溃,要么抛出40mb的代码,需要它们的库才能工作) 无论如何,下面是模式中一个问题元素的示例: <xsd:schema xmlns:ns1="something" xmlns:ns2="somethinelse" targetNamespace="something"> <xsd:complexType name="someType"> <

我有一个来自第三方的模式,我使用Xsd2Code生成了c#对象(其他选项,如xsd.exe、xmlspy等,要么崩溃,要么抛出40mb的代码,需要它们的库才能工作)

无论如何,下面是模式中一个问题元素的示例:

<xsd:schema xmlns:ns1="something" xmlns:ns2="somethinelse" targetNamespace="something">

  <xsd:complexType name="someType">
    <xsd:sequence>
      <xsd:element ref="element1" />
      <xsd:element ref="ns2:element2" />
    </xsd:sequence>
  </xsd:complexType>

 </xsd:schema>
使用上述模式的xml示例:

<someType>
  <element1>SomeValue</element1>
  <ns2:element2>SomeValue2</element2>
</someType>

生成的对象正确序列化,将“ns2”添加到需要它的元素中。但是,在反序列化时,element1被设置,element2被保留为null。

提供给我们的示例数据的命名空间中有一个typeo,这导致它反序列化错误。算了吧

<someType>
  <element1>SomeValue</element1>
  <ns2:element2>SomeValue2</element2>
</someType>
XmlSerializer ser = new XmlSerializer(typeof(SomeType));
XmlReader reader = XmlReader.Create(new StringReader(xmlString))
SomeType obj = (SomeType)ser.Deserialize(reader)