2010-04-23 46 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,導致它反序列化錯誤。去搞清楚。

相關問題