Quiero comparar dos documentos HTML y quiero saber si son los mismos. Pero solo comparar por estructura DOM, lo que significa ignorar el orden de los atributos en una etiqueta, por ejemplo, <table id="one" name="table">
, <table name="table" id="one">
son lo mismo.¿Hay alguna herramienta que pueda comparar documentos HTML por estructura DOM?
Respuesta
DOM Nivel 3 Núcleo proporciona el método isEqualNode() que compara el contenido de dar un DOM nodo analizado.
Esto es apoyado por Firefox, Chrome, Safari e IE9, pero no Opera o navegadores anteriores Si necesita ayuda en otros navegadores que tendría que aplicar por sí mismo Aquí está una implementación parcial en JS:..
function Node_isEqualNode(that, other) {
// Use native support where available
//
if ('isEqualNode' in that)
return that.isEqualNode(other);
// Check general node properties match
//
var props= ['nodeType', 'nodeName', 'localName', 'namespaceURI', 'prefix', 'nodeValue'];
for (var i= props.length; i-->0;)
if (that[props[i]]!==other[props[i]])
return false;
// Check element attributes match
//
if (that.nodeType===1) {
if (that.attributes.length!==other.attributes.length)
return false;
for (var i= that.attributes.length; i-->0;)
if (!Node_isEqualNode(that.attributes[i], other.getAttribute(that.attributes[i].name)))
return false;
}
// Check children match, recursively
//
if (that.childNodes.length!==other.childNodes.length)
return false;
for (var i= that.childNodes.length; i-->0;)
if (!Node_isEqualNode(that.childNodes[i], other.childNodes[i]))
return false;
return true;
}
Tenga en cuenta que esto no prueba las propiedades adicionales DocumentType
como requiere DOM Level 3 Core. Puede agregar esto bastante fácilmente, pero el soporte del navegador de cosas como entities
es bastante débil de todos modos.
tengo resolver el problema, es una solución daisydiff
DaisyDiff está dando algún puntero nulo. Por favor comparte tu solución. –
que he usado para un WinMerge hella mucho tiempo y nunca he tenido ningún problema con él.
Lo uso para php/html/css, etc. - pero mis colegas también lo usan para delphi, C# y más.
Tuve este problema y pude resolverlo mediante la función .html()
de jQuery para poner mi código html en div
y luego volver a sacarlo, obteniendo así una representación canónica del código. Parece funcionar bien en Firefox 4 e IE8 al menos.
function compareHtml(a, b) {
var div = $(document.createElement('div'));
div.html(a);
var aNormalized = div.html()
div.html(b);
var bNormalized = div.html()
return aNormalized == bNormalized;
}
- 1. ¿Hay alguna herramienta que pueda incorporar CSS?
- 2. ¿Hay alguna herramienta que detecte GUID duplicados?
- 3. ¿Hay una etiqueta HTML que se pueda usar en cualquier parte del DOM?
- 4. ¿Hay alguna herramienta de DRYer por ahí?
- 5. ¿Hay alguna manera de hacer que TFS se pueda enlazar?
- 6. ¿Hay alguna herramienta que pueda determinar realizar análisis de código para la complejidad de Big-O?
- 7. ¿Hay alguna herramienta como doxygen para XSLT?
- 8. ¿Hay alguna herramienta que pueda informar sobre el código .NET comentado?
- 9. ¿Hay alguna herramienta que admita matemáticas discretas?
- 10. ¿Hay alguna herramienta que pueda analizar las dependencias entre variables en los programas de C#?
- 11. ¿Hay alguna herramienta que pueda mostrar visualmente un repositorio SVN (es decir, gráficos bonitos)?
- 12. ¿Hay alguna herramienta de generación de diseño basada en CSS que se pueda arrastrar y soltar?
- 13. ¿Hay alguna herramienta de inyección SQL para que pueda probar la vulnerabilidad de mi sitio?
- 14. ¿Hay alguna herramienta de validación de marcado HTML independiente?
- 15. ¿Hay alguna forma en que pueda hacer dos lecturas atómicas?
- 16. ¿Hay alguna forma de que YQL devuelva HTML?
- 17. ¿Hay alguna herramienta XSL Lint?
- 18. ¿Hay alguna manera de hacer que el texto no se pueda seleccionar en una página HTML?
- 19. ¿Hay alguna heurística de relleno de CSS que pueda seguir?
- 20. ¿Hay alguna herramienta virtualenv como C++ por ahí?
- 21. Sugerencias sobre cómo compilar una herramienta HTML Diff?
- 22. ¿Hay alguna herramienta de administración de repositorios de paquetes R?
- 23. ¿Alguna herramienta para identificar clases CSS/HTML indefinidas?
- 24. ¿Alguna herramienta de animación SVG por ahí?
- 25. ¿Hay alguna herramienta que documente un repositorio SVN?
- 26. ¿Alguna posibilidad de que javafuse pueda funcionar?
- 27. ¿Hay alguna herramienta para actualizar Javadoc automáticamente?
- 28. Comparar elementos HTML por índice z real
- 29. ¿Hay alguna herramienta de análisis estático que pueda ayudar a detectar las referencias circulares shared_ptr <>?
- 30. ¿Hay alguna herramienta que pueda extraer todas las cadenas de comandos SQL de los archivos de formularios Delphi?
posible duplicado de [¿Hay herramientas que hay para comparar la estructura de 2 páginas web?] (Http://stackoverflow.com/questions/48669/are-there-any-tools-out-there -to-compare-the-structure-of-2-web-pages) –
@DanielVandersluis No estoy de acuerdo con el duplicado. La otra pregunta también quiere ignorar los valores reales de identificación y de texto. –