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?
18
A
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
2
Prueba el XML Dif Microsoft y utilidad patch here o Google "XML Dif"
4
Además de "Adam Ruth" He leído a través del enlace de Microsoft y esta entrada del blog es muy útil ..
Eric White: http://blogs.msdn.com/b/ericwhite/archive/2009/01/28/equality-semantics-of-linq-to-xml-trees.aspx
Cuestiones relacionadas
- 1. Compruebe si 2 URL son iguales
- 2. comparar arrays para la igualdad, el orden de los elementos
- 3. Cómo comparar dos cadenas si no son iguales
- 4. PHP: Función incorporada para verificar si dos valores de matriz son iguales (Ignorar el orden)
- 5. Comparar diccionarios ignorando claves específicas
- 6. ¿Por qué los objetos Buffer y List son iguales (incluso si son de clases diferentes)?
- 7. cómo verificar si 2 archivos son iguales usando .NET?
- 8. ¿Existe una manera simple de comparar instancias de BufferedImage?
- 9. Cómo comparar valores dentro de una matriz en Python - descubra si 2 valores son los mismos
- 10. Cocoa: compruebe si dos NSArrays son iguales
- 11. LINQ: compruebe si dos listas son iguales
- 12. Comparación de XML ignorando el orden de los elementos secundarios
- 13. ¿Existe alguna manera fácil de usar InternalsVisibleToAttribute?
- 14. Una manera fácil (¿herramienta?) De comparar imágenes de píxel por píxel en diferentes formatos?
- 15. ¿Hay alguna manera de verificar si dos elementos DOM son iguales?
- 16. PHP: Probando si tres variables son iguales
- 17. Determinar si dos posiciones de ajedrez son iguales
- 18. pitón reducir comprobar si todos los elementos son iguales
- 19. Comprueba si dos vectores son iguales
- 20. ¿Cuál es la mejor manera de comparar 2 árboles de carpetas en Windows?
- 21. ¿Son dos funciones iguales?
- 22. ¿Existe alguna manera fácil de aleatorizar una lista en VB.NET?
- 23. ¿Existe una función LISP común para comparar el contenido de dos listas?
- 24. Determine si dos árboles binarios son iguales
- 25. Cómo comparar cadenas en sql ignorando el caso?
- 26. XML :: LibXML: ¿detecta si dos elementos son iguales?
- 27. ¿Cuál es la forma más segura de determinar si 2 URL son iguales?
- 28. ¿Son estos 2 algoritmos de mochila iguales? (¿Siempre salen igual?)
- 29. La mejor manera de comparar 2 documentos XML en .NET
- 30. Cómo determinar si todos los caracteres de una cadena son iguales
1 DeepEquals trabaja un convite - gracias – adrianos
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