Comment puis-je spécifier sérialisation XML attributs pour soutenir préfixes d'espace de noms lors de la désérialisation dans .NET?

StackOverflow https://stackoverflow.com/questions/1254544

Question

J'ai un code XML suivant:

<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>

Comment définir les attributs sérialisation XML sur une classe pour soutenir le scénario décrit?

Était-ce utile?

La solution

Vous devez indiquer les espaces de noms chaque champ nécessite en utilisant Namespace XmlElement attribut. Cela vous permettra d'associer un champ avec un espace de nom particulier, mais vous aurez également besoin d'exposer une propriété sur votre classe qui retourne le type XmlNamespaceDeclarations afin d'obtenir l'association de préfixe.

Voir la documentation et de l'échantillon ci-dessous:

[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");
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top