Pergunta

Atualmente estou usando XmlSerializer para serializar e desserializar um objeto. A XML é gerado numa ordem indefinido o que é compreensível, mas torna irritante quando comparando versões do objecto, uma vez que a ordem das propriedades é diferente de cada vez. Assim, por exemplo, eu não pode usar uma ferramenta de comparação normal ver as diferenças.

Existe uma maneira fácil de gerar o meu xml na mesma ordem a cada vez, sem escrever as ReadXml e WriteXml mim mesmo? Eu tenho um monte de propriedades na classe, e adicionar novos e agora cada vez, por isso preferem não tem que escrever e depois manter esse código.

(C # NET 2.0)

Foi útil?

Solução

O atributo XmlElement tem um propriedade de ordem . Você pode usar isso como um começo.

Se você precisa encontrar o diff em arquivos XML, você pode querer dar uma olhada em este .

Outras dicas

Decore suas propriedades com o XmlElementAttribute , ajustando o parâmetro a Order .

ps: Eu não acredito que o XML gerado pelo XmlSerializer está em uma ordem indefinida. Pode ser indocumentado, mas sabe-se. Eu acredito que, na ausência da Ordem atributos, o XmlSerializer serializa todas as propriedades públicas, alfa-ordenados pelo nome prop, e, em seguida, todo o público Fields, alfa-classificadas por nome.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top