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