Como posso especificar atributos de serialização XML para prefixos suporte namespace durante a desserialização em .NET?

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

Pergunta

Eu tenho um XML seguinte:

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

Como posso definir atributos XML serialização em uma classe para apoiar cenário descrito?

Foi útil?

Solução

Você precisa indicar qual namespaces cada campo exige usando Namespace de XmlElement atributo. Isso permitirá que você associe um campo com um namespace particular, mas você também vai precisar para expor uma propriedade em sua classe que tipo de retorno XmlNamespaceDeclarations a fim de obter a associação prefixo.

Veja a documentação e exemplo abaixo:

[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");
    }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top