2009-05-17 4 views
18

Unidad probando mi código de serialización Encontré uno que falló porque tenía atributos listados en un orden diferente (estoy comparando los valores de XDocument.ToString()) y mientras podía arreglar eso, realmente no me importaba en qué orden aparecen los elementos o atributos siempre que estén todos allí con el nombre correcto en el nivel correcto de jerarquía. Probablemente podría escribir un método para hacer esto, pero me pregunto si existe una forma fácil de construir que no conozco.¿Existe una manera fácil de comparar si 2 XDocuments son iguales ignorando el orden de los elementos/atributos?

Respuesta

11

XNode tiene una función DeepEquals que debería hacer el truco.

http://msdn.microsoft.com/en-us/library/system.xml.linq.xnode.deepequals.aspx

Actualización:

Parece que la función DeepEquals no siempre funciona correctamente. Es mejor que implementes tu propia rutina de comparación.

http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=400469

+0

1 DeepEquals trabaja un convite - gracias – adrianos

+0

DeepEquals funciona como encanto para mí. Gracias. He leído la publicación mencionada por Aim Kai, y afortunadamente esos escenarios no eran aplicables en mi caso. – publicgk

2

Prueba el XML Dif Microsoft y utilidad patch here o Google "XML Dif"

Cuestiones relacionadas