Como usar .NET serialização XML, sem um esquema garantida
-
06-07-2019 - |
Pergunta
Basicamente, eu tenho alguns xml que eu preciso para desserializar. Na época, eu escrever o meu código, eu vou conhecer a estrutura do XML, mas eu gostaria de ser capaz de fazer mudanças simples para o XML sem ter que atualizar o código de serialização.
Exemplo:
<foo>
<bar/>
</foo>
Eu gostaria de ser capaz de deserialize foo, mesmo se eu adicionar um nó adicional que não está definido na classe serializável attibuted.
<foo>
<bar/>
<extra-tag/>
</foo>
Solução
Se entendi sua pergunta corretamente isso deve funcionar bem.
Dada uma classe:
[XmlRoot("foo")]
public class Foo
{
[XmlElement("bar")]
public string Bar;
[XmlElement("extra-tag")]
public string ExtraTag;
}
Então este código funciona bem:
string xml =
@"<foo>
<bar>bar</bar>
<extra-tag>extra-tag</extra-tag>
</foo>";
XmlSerializer serializer = new XmlSerializer(typeof(Foo));
Foo afoo = (Foo)serializer.Deserialize(new StringReader(xml));
Mas se a sua aparência de classe como este:
[XmlRoot("foo")]
public class Foo
{
[XmlElement("bar")]
public string Bar;
}
o código continua a trabalhar
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow