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");
}
}
Author by
Piotr Owsiak
Updated on June 05, 2022Comments
-
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?