1. 反序列化
XML格式为,变量名BackXml,值为:
<?xml version="1.0" encoding="UTF-8"?>
<Message>
<Header>
<Result>F</Result>
<ResultMsg>HS编码填写有误!商品图片不能为空!</ResultMsg>
</Header>
<body>
<Name>142</Name>
<phone>78455</phone>
</body>
</Message>
首先创建对应反序列化模型:
[Serializable]
[XmlRoot("Message")]
[XmlInclude(typeof(Header))]
public class KJBReturnCnecJhHscode<T, K>
{
/*
<?xml version="1.0" encoding="UTF-8"?>
<Message>
<Header>
<Result>F</Result>
<ResultMsg>HS编码填写有误!商品图片不能为空!</ResultMsg>
</Header>
</Message>
*/
/// <summary>
/// 标记: success-成功 failure-失败
/// </summary>
[XmlElement("Header")]
public T Header { get; set; }
[XmlElement("Body")]
public K Body { get; set; }
}
[Serializable]
[XmlType("Header")]
[XmlInclude(typeof(ProductHeader))]
public class Header
{
[XmlElement("Result")]
public string Result { get; set; }
[XmlElement("ResultMsg")]
public string ResultMsg { get; set; }
}
[XmlType("ProductHeader")]
public class ProductHeader : Header
{
[XmlElement("ProductId")]
public string ProductId { get; set; }
}
[Serializable]
public class Body
{
[XmlAttribute]
public string Result { get; set; }
[XmlAttribute]
public string ResultMsg { get; set; }
[XmlAttribute]
public string ProductId { get; set; }
}
反序列化代码部分:
XmlSerializer xmlSerializer = new XmlSerializer(typeof(KJBReturnCnecJhHscode<ProductHeader, Body>));
TextReader reader = new StringReader(BackXml);
KJBReturnCnecJhHscode<ProductHeader, Body> msg =
(KJBReturnCnecJhHscode<ProductHeader, Body>)xmlSerializer.Deserialize(reader);
//完成。