c# - 面临将 XML 转换为 Object 的问题
问题描述
我正在尝试将以下 XML 转换为对象,
<Addresses><Address><AddressLine1>61A PEEL ST</AddressLine1><AddressLine2></AddressLine2><Suburb>WEST MELBOURNE</Suburb><State>VIC</State><PostCode>3003</PostCode></Address><Address><AddressLine1>U 101/61 PEEL ST</AddressLine1><AddressLine2></AddressLine2><Suburb>WEST MELBOURNE</Suburb><State>VIC</State><PostCode>3003</PostCode></Address><Address><AddressLine1>U 102/61 PEEL ST</AddressLine1><AddressLine2></AddressLine2><Suburb>WEST MELBOURNE</Suburb><State>VIC</State><PostCode>3003</PostCode></Address><Address><AddressLine1>59 PEEL ST</AddressLine1><AddressLine2></AddressLine2><Suburb>WEST MELBOURNE</Suburb><State>VIC</State><PostCode>3003</PostCode></Address><Address><AddressLine1>63 PEEL ST</AddressLine1><AddressLine2></AddressLine2><Suburb>WEST MELBOURNE</Suburb><State>VIC</State><PostCode>3003</PostCode></Address><Address><AddressLine1>63A PEEL ST</AddressLine1><AddressLine2></AddressLine2><Suburb>WEST MELBOURNE</Suburb><State>VIC</State><PostCode>3003</PostCode></Address><Address><AddressLine1>57 PEEL ST</AddressLine1><AddressLine2></AddressLine2><Suburb>WEST MELBOURNE</Suburb><State>VIC</State><PostCode>3003</PostCode></Address><Address><AddressLine1>57A PEEL ST</AddressLine1><AddressLine2></AddressLine2><Suburb>WEST MELBOURNE</Suburb><State>VIC</State><PostCode>3003</PostCode></Address></Addresses>
使用以下代码反序列化 XML,
XmlSerializer serializer = new XmlSerializer(typeof(Addresses));
using (TextReader reader = new StringReader(addressValidationResult.Alternates))
{
Addresses result = (Addresses)serializer.Deserialize(reader);
}
使用“addressValidationResult.Alternates”作为结果提供上述 XML 字符串。
PFB我的模型,
namespace Models
{
public class Addresses
{
public List<Address> AddressesList { get; set; }
}
public class Address{
public string AddressLine1 { get; set; }
public string AddressLine2 { get; set; }
public string Suburb { get; set; }
public string State { get; set; }
public string PostCode { get; set; }
}
}
结果是一个没有任何数据的空列表。代码没有抛出异常,但数据也没有得到转换。
有人可以让我知道我在这里缺少什么吗
解决方案
您的反序列化模型和代码看起来是正确的,唯一缺少的是一些 XmlElement 属性。添加[XmlElement("Address")]
到AddressesList
属性是这里的关键解决方案。
[XmlRoot("Addresses")]
public class Addresses
{
[XmlElement("Address")]
public List<Address> AddressesList { get; set; }
}
public class Address
{
[XmlElement("AddressLine1")]
public string AddressLine1 { get; set; }
[XmlElement("AddressLine2")]
public string AddressLine2 { get; set; }
[XmlElement("Suburb")]
public string Suburb { get; set; }
[XmlElement("State")]
public string State { get; set; }
[XmlElement("PostCode")]
public string PostCode { get; set; }
}
推荐阅读
- perforce - Perforce 无法解析移动的文件
- java - com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;CLjava/lang/Object;)V
- linux - 即使 CMake 正确定位了相关的 .so 文件,链接器也会出错
- python - 如何循环整个 LED 序列?
- linux - 使用 std::thread 时,类中的成员变量会被破坏
- javascript - Javascript 不更新输入
- java - 展开树中的自动调整旋转策略
- c# - IDX10501:签名验证失败。Azure SSO WS 联合
- c# - C#奇怪的模速度行为
- javascript - 过滤和映射后如何获取用户ID