Standing on the shoulders of giants. RSS 2.0
# Monday, July 18, 2005

This code shows how to deserialize a string containing xml to an object using a StringReader and an XmlTextReader (remember to insert a using-statement, where appropiate). The deserialized class also shows how to handle xml-arrays using the serialization attributes.

// ===============================================================================
// Copyright (C) 2005 Paul van Brenk
// All rights reserved.
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY
// OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT
// LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR
// FITNESS FOR A PARTICULAR PURPOSE.
// ==============================================================================
// Deserializing a string containing xml and an xml-array.
// ==============================================================================


using System;
using System.Collections;
using System.IO;
using System.Xml;
using System.Xml.Serialization;

public class MyClass
{
    public static void Main()
    {
    
        string xml = "<person>" +
                        "<firstname>Paul</firstname>" +
                        "<lastname>van Brenk</lastname>" +
                        "<addresses>" +
                        "    <address>" +
                        "        <street>Home Street</street>" +
                        "        <number>80</number>" +
                        "        <postalcode>1000 AA</postalcode>" +
                        "        <city>Home Town</city>" +
                        "        <country>The Netherlands</country>" +
                        "    </address>" +
                        "    <address>" +
                        "         <street>Work Street</street>" +
                        "        <number>100</number>" +
                        "        <postalcode>1000 BB</postalcode>" +
                        "        <city>Work Town</city>" +
                        "        <country>The Netherlands</country>" +
                        "    </address>" +
                        "</addresses>" +
                    "</person>";
                    
        XmlSerializer ser = new XmlSerializer( typeof(Person) );
        
        StringReader reader = new StringReader(xml);
        XmlTextReader xmlReader = new XmlTextReader(reader);
        
        Person person = (Person)ser.Deserialize(xmlReader);
    }
}

[XmlRoot("person")]
public class Person{

    public Person(){
        // required for serializer
    }
    
    [XmlElement("firstname")]
    public string FirstName;
    [XmlElement("lastname")]
    public string LastName;
    
    //defines the arraynode
    [XmlArray("addresses")]
    // defines the node in the array
    [XmlArrayItem("address")]
    public Address[] Addresses{
        get{
            if(this.addresses == null ){
                return new Address[0];
            }
            return this.addresses;
        }
        set{
            this.addresses = value;
        }
    }

    [XmlAnyElement()]
    public XmlElement[] UnknownElements;

    private Address[] addresses;
}

// this attribute has no influence on the rendering
// of the element as part of an Xml-array.
[XmlRoot("address")]
public class Address{

    public Address(){
        // required for serializer
    }
    [XmlElement("street")]
    public string Street;
    [XmlElement("number")]
    public int Number;
    [XmlElement("postalcode")]
    public string PostalCode;
    [XmlElement("city")]
    public string City;
    [XmlElement("country")]
    public string Country;
}

Monday, July 18, 2005 5:07:03 PM (W. Europe Daylight Time, UTC+02:00)  #    Comments [0] - Trackback
Codesnippet
Tracked by:
"How to: Deserializing a string containing XML and a XML-array" (Alex's blog abo... [Trackback]
Comments are closed.
About
© Copyright 2009
Paul van Brenk
Sign In
newtelligence dasBlog 2.3.8275.16006
All Content © 2009, Paul van Brenk
DasBlog theme 'Business' created by Christoph De Baene (delarou)