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被留空。