我致电客户的网络服务。它返回一个XMLElement。 我想反序列化此结果,但出现错误:
InvalidOperationException:不需要
<element xmlns='http://www.w3.org/2001/XMLSchema'>
。
我尝试如下:
XElement root = XElement.Parse(result.OuterXml);
var query = root.Descendants().FirstOrDefault(r => r.FirstAttribute != null && r.FirstAttribute.Value == "ZER_ENTEGRASYON");
XmlSerializer XML = new XmlSerializer(typeof(ZerDataList));
using (var reader = new StringReader(query.ToString()))
{
var serializer = new XmlSerializer(typeof(ZerDataList));
var someTest = serializer.Deserialize(reader) as ZerDataList;
}
result.OuterXml:
<xs:element name="ZER_ENTEGRASYON" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="ZER_DAYSYIKTRANSIT">
<xs:complexType>
<xs:sequence>
<xs:element name="SIPARIS_ID" type="xs:int" minOccurs="0" />
<xs:element name="BOLUM_ID" type="xs:int" minOccurs="0" />
<xs:element name="SORUMLU" type="xs:string" minOccurs="0" />
<xs:element name="SAP_SIPARIS_NO" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
ZerDataList:
[Serializable()]
[System.Xml.Serialization.XmlRoot("ZER_ENTEGRASYON")]
[System.Xml.Serialization.XmlTypeAttribute("element",Namespace = "http://www.w3.org/2001/XMLSchema")]
public class ZerDataList
{
[XmlElement("ZER_DAYSYIKTRANSIT")]
public ZerData[] ZerData { get; set; }
}
[Serializable()]
public class ZerData
{
[XmlElement("SIPARIS_ID")]
public int SIPARIS_ID { get; set; }
[XmlElement("BOLUM_ID")]
public int BOLUM_ID { get; set; }
[XmlElement("SORUMLU")]
public string SORUMLU { get; set; }
[XmlElement("SAP_SIPARIS_NO")]
public string SAP_SIPARIS_NO { get; set; }
}
任何帮助将不胜感激。
答案 0 :(得分:1)
问题在这里:
[System.Xml.Serialization.XmlTypeAttribute("element",Namespace = "http://www.w3.org/2001/XMLSchema")]
名称空间不能映射为元素,因为它不是元素。因此错误:
InvalidOperationException:不会出现http://www.w3.org/2001/XMLSchema'>。
您应该这样使用它:
[XmlElement(
Namespace = "http://www.cpandl.com")]