我想比较两个HTML文档,并且想知道它们是否相同。但是只能通过DOM结构进行比较,这意味着忽略标签中属性的顺序,例如,<table id="one" name="table">
,<table name="table" id="one">
是相同的。是否有任何工具可以通过DOM结构比较HTML文档?
5
A
回答
1
3
DOM Level 3的核心提供了比较内容给予解析DOM节点的方法isEqualNode()。
这是由火狐,Chrome,Safari和IE9,但不是歌剧或更早版本的浏览器都支持。如果您需要在其他浏览器的支持,你将不得不自己实现它下面是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;
}
请注意,这不会针对DOM Level 3 Core所需的额外DocumentType
属性进行测试。你可以很容易地添加这个,但是然后像entities
这样的浏览器支持是非常薄弱的。
0
我必须解决的问题,daisydiff是一个解决方案
+0
DaisyDiff给出了一些空指针。请分享您的解决方案。 – 2013-09-26 04:54:37
0
我用WinMerge了海拉很长一段时间,我从来没有任何问题了。
我使用它的PHP/HTML/CSS等 - 但我的同事也使用它的德尔福,C#和更多。
3
我有这个问题,并能够解决它通过使用jQuery的.html()
函数把我的HTML代码到div
,然后再次拿回来,从而获得代码的规范表示。似乎至少在Firefox 4和IE8中工作得很好。的
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. 是否有任何工具可以比较2个网页的结构?
- 2. 用于导出和比较html dom结构的工具
- 3. ReactJs:是否可以通过类名呈现DOM文档?
- 4. 是否有任何工具可以提供LUA项目的类/结构图
- 5. 是否有任何工具可以生成labels.rdf文件?
- 6. 是否有工具可以比较复杂PSD文件中的图层?
- 7. 是否有比较/比较两个Java包的体面工具?
- 8. 获取我有以下的HTML DOM文档通过
- 9. 通过一个比较结构
- 10. C++中是否有可用的语义比较工具?
- 11. 是否有可能更改Visual Studio架构比较差异工具?
- 12. 可视化HTML文档树(DOM树)的工具
- 13. 是否可以通过make()来调用结构构造函数?
- 14. 是否有允许异常的文件比较工具?
- 15. 是否有任何工具可以轻松阅读JavaScript代码?
- 16. 是否有任何工具可以使用open GL
- 17. 是否有任何工具可以记录SVN存储库?
- 18. 是否有任何工具可以自动安装软件?
- 19. 是否有任何工具可以检查窗口或视图的类构造层次结构?
- 20. 如何通过ShellExecute查找文档是否可以打开?
- 21. git合并结果不能通过比较工具读取
- 22. 是否可以通过XBAP覆盖HTML?
- 23. Visual Studio 2012 RC比较工具是否仅比较?
- 24. 是否有任何我可以通过编程调用的Eclipse重构API?
- 25. 是否有任何Python模块可用于[{},{} ...]比较?
- 26. 是否有任何API可以从Java源文件生成包结构
- 27. 构成WPF体系结构的比较/查看类的工具
- 28. 是否可以通过属性更改类的结构?
- 29. 是否有任何JavaScript库为HTML创建一个很好的结构化(树)比较?
- 30. 是否需要通过C#进行数据库模式比较的任何工具
可能重复[是否有任何工具,有比较的2个网页结构?](http://stackoverflow.com/questions/48669/are-there-any-tools-out-there比较2-web-pages的结构) – 2010-09-21 14:04:47
@DanielVandersluis不同意重复。另一个问题也想忽略实际的id和文本值。 – 2014-02-27 05:19:36