2010-04-23 47 views
1

我有,我已经使用Xsd2Code生成的C#对象第三方架构(其他选项,如XSD.EXE,XMLSpy的等要么崩溃或喷出的代码40MB,需要他们的图书馆工作)如何从多个名称空间获取XmlSerializer反序列化属性?

无论如何,这里的从架构的问题元件的一个例子:

<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> 

生成的包装类看起来像这样:使用所述模式

[XmlType(Namespace="something")] 
[XmlRoot("someType", Namespace="something", IsNullable=false)] 
public partial class SomeType { 
    public string Element1 { get; set; } 

    [XmlElement(Namespace="somethinelse")] 
    public string Element2 { get; set; } 
} 

示例XML:

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

(任何错误都是我输入的例子。该模式是有效的和不可更改的)

而现在的问题。当我尝试反序列化XML像这样:

XmlSerializer ser = new XmlSerializer(typeof(SomeType)); 
XmlReader reader = XmlReader.Create(new StringReader(xmlString)) 
SomeType obj = (SomeType)ser.Deserialize(reader) 

生成的对象序列化正确,加上“NS2”到需要它的元素。但是,在反序列化时,element1被设置并且element2被留空。

回答

0

我们提供的示例数据在命名空间中有一个typeo,导致它反序列化错误。去搞清楚。

相关问题