2014-12-22 21 views
1

我有这个XML片段,我试图反序列化它。我已经尝试过以下类反序列化,但我没有得到地址行,我只能得到城市州和邮政编码。 有人能指出我的错误吗?我看不到我做错了什么。 XML和类就在下面。使用C#反序列化XML#

XML:

  <RemitTo> 
      <Address> 
       <AddressLine lineNumber="1">Blah blah</AddressLine> 
       <AddressLine lineNumber="2">bah bah bah</AddressLine> 
       <AddressLine lineNumber="3">bah3</AddressLine> 
       <City>Minneapolis</City> 
       <State>MN</State> 
       <PostalCode>55413</PostalCode> 
       <Country isoCountryCode="US">United States</Country> 
      </Address> 
     </RemitTo> 

类:

[XmlRoot("RemitTo")] 
    public partial class RemitTo 
    { 
     [XmlElementAttribute("Address")] 
     public List<Address> RemitToAddress { get; set; } 

    } 

    public partial class Address 
    { 


     [XmlArray("Address")] 
     [XmlArrayItem("AddressLine")] 
     public List<string> AddressLine { get; set; } 


     public string City { get; set; } 
     public string State { get; set; } 
     public string PostalCode { get; set; } 
     public string Country { get; set; } 
    } 

在代码即时通讯做这个。

RemitTo i; 
XmlSerializer serializer = new XmlSerializer(typeof(RemitTo)); 
i = (RemitTo)serializer.Deserialize(addressReader); 

回答

3

它应该是这样简单

[XmlElement("AddressLine")] 
    public List<string> AddressLine { get; set; } 

XmlArray是不适用的,因为我们已经在Address类中,并没有在孩子身边的物品没有进一步的包装元素。

Reference

+0

StuartLC我一定是花了4小时试图figuered了这一点。感谢您花时间!上帝,我觉得自己像这样一个愚蠢的A **。 – Miguel

+1

不仅值得欢迎 - 我花了很多时间让自己尝试将xml变成实体。当我真的陷入困境时,我倾向于使用XSL将xml预先投影到更接近我的实体图的东西上。 – StuartLC