【发布时间】:2020-06-12 09:26:16
【问题描述】:
希望有人能指出我在这里遗漏的内容。我正在尝试反序列化 SOAP API 调用的结果。
soapenv 中有以下 InnerXML:结果正文
<ns2:OperationResponseInfo xmlns:ns2="http://www.XXXXX.com/webservice/">
<status>
<statusCode>0</statusCode>
<statusDesc>No Error</statusDesc>
</status>
<result>
<record>
<param>
<name>totalrecord</name>
<value>9</value>
</param>
</record>
</result>
<result>
<record>
<param>
<name>ALARMID</name>
<value>1581807719208</value>
</param>
<param>
<name>ALARMDESC</name>
<value>xxxxxxxxxxxxxx</value>
</param>
<param>
<name>ALARMSTATUS</name>
<value>Unacknowledged</value>
</param>
</record>
</result>
</ns2:OperationResponseInfo>
我正在尝试反序列化为以下对象:-
[XmlRoot(ElementName = "OperationResponseInfo", Namespace = "http://www.XXXXX.com/webservice/")]
public class OperationResponseInfo
{
[XmlElement(ElementName = "status")]
public Status Status { get; set; }
[XmlElement(ElementName = "result")]
public List<Result> Result { get; set; }
//[XmlAttribute(AttributeName = "ns2", Namespace = "http://www.XXXXX.com/webservice/")]
//public string Ns2 { get; set; }
}
[XmlRoot(ElementName = "status")]
public class Status
{
[XmlElement(ElementName = "statusCode")]
public string StatusCode { get; set; }
[XmlElement(ElementName = "statusDesc")]
public string StatusDesc { get; set; }
}
[XmlRoot(ElementName = "result")]
public class Result
{
[XmlElement(ElementName = "record")]
public List<Record> Record { get; set; }
}
[XmlRoot(ElementName = "record")]
public class Record
{
[XmlElement(ElementName = "param")]
public List<Param> Param { get; set; }
}
[XmlRoot(ElementName = "param")]
public class Param
{
[XmlElement(ElementName = "name")]
public string Name { get; set; }
[XmlElement(ElementName = "value")]
public string Value { get; set; }
}
这是我正在使用的反序列化方法
public class Serializer
{
public T Deserialize<T>(string input) where T : class
{
System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(typeof(T));
using (StringReader sr = new StringReader(input))
{
return (T)ser.Deserialize(sr);
}
}
这是对反序列化方法的调用
var alarmList = ser.Deserialize<OperationResponseInfo>(docInner.InnerXml);
我在另一个系统上工作(具有不同的 SOAP 结果格式/c# 类等),但由于某种原因,反序列化返回 0 结果。代码根本没有错误。我错过了什么?
【问题讨论】:
标签: c# xml deserialization xml-deserialization