asp.net - 如何使用多个嵌套项反序列化 XML?

标签 asp.net xml xml-serialization

我已经提供了无法更改的 XML,我需要将其反序列化为自定义类:

<Person>
   <Addresses>
       <MainAddress>
          <Country />
          <City />
       </MainAddress>
       <AdditionalAddress>
          <Country />
          <City />
       </AdditionalAddress>
       <AdditionalAddress>
          <Country />
          <City />
       </AdditionalAddress>
       ... other additional addresses
   </Addresses>
   ... other elements
</Person>

然后我反序列化:

XmlSerializer serializer = new XmlSerializer(typeof(Person), namespace);
Person person = serializer.Deserialize(stream) as Person;       

反序列化器在反序列化简单元素的情况下工作正常。 当有像 Addresses 这样的元素时,我在它的类上实现 IXmlSerializable,如下所示:link text

问题是 reader.ReadElementContentAsString() 不能用于复杂元素。

最佳答案

地址类应该这样声明:

[XmlRoot("Adressess")]
public class Adressess
{
    [XmlElement(ElementName = "MainAddress")]
    public MainAddress Main { get; set; }

    [XmlElement(ElementName = "AdditionalAddress")]
    public List<AdditionalAddress> AdditionalAddresses { get; set; }
}

[XmlRoot("MainAddress")]
public class MainAddress 
{
    public string Country { get; set; }
    public string City { get; set; }
}

[XmlRoot("AdditionalAddress")]
public class AdditionalAddress
{
    public string Country { get; set; }
    public string City { get; set; }
}

关于asp.net - 如何使用多个嵌套项反序列化 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1880983/

相关文章:

.net - 为什么 WebService 会在实际服务返回数据时返回空值?

java - android应用开发的充分先决条件

php - 在 PHP 中解析巨大的 XML 文件

c# - 可以使用 XmlAttributes 有选择地 XmlIgnore 吗?

java - JAXB - 将元素解析为字符串

c# - 类库中的 app.config - asp.net C#

asp.net - 无法在 Web 服务器上启动调试。无法启动 ASP.NET 调试 VS 2010、II7、Win 7 x64

c# - 单击按钮后 ASP.NET 页面元素消失

asp.net - 您可以在ASP.NET中指定差异./、../~~/吗?

c# - .NET Xml 序列化 : Integer Element with Attribute?