How do I specify XML serialization attributes to support namespace prefixes during deserialization in .NET?

19,213

You'll need to indicate which namespaces each field requires by using Namespace of XmlElement attribute. This will allow you to associate a field with a particular namespace, but you'll also need to expose a property on your class that returns type XmlNamespaceDeclarations in order to get the prefix association.

See documentation and sample below:

[XmlRoot(ElementName = "person")]
public class Person
{
    [XmlElement(Namespace = "http://example.com")]
    public string fname;

    [XmlElement(Namespace = "http://sample.com")]
    public string lname;

    [XmlNamespaceDeclarations]
    public XmlSerializerNamespaces xmlns = new XmlSerializerNamespaces();

    public Person()
    {
        xmlns.Add("a", "http://example.com");
        xmlns.Add("b", "http://sample.com");
    }
}
Share:
19,213
Piotr Owsiak
Author by

Piotr Owsiak

Updated on June 05, 2022

Comments

  • Piotr Owsiak
    Piotr Owsiak almost 2 years

    I have a following XML:

    <person xmlns:a="http://example.com" xmlns:b="http://sample.net">
        <a:fName>John</a:fName>
        <a:lName>Wayne</a:lName>
        <b:age>37</b:age>
    </person>
    

    How do I define XML serialization attributes on a class to support described scenario?