我想比较两个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. 是否有比较工具可以逐行合并?
- 5. 是否有任何工具可以提供LUA项目的类/结构图
- 6. html文档比较
- 7. 是否有任何工具可以生成labels.rdf文件?
- 8. 是否有任何工具可以帮助我通过CONSTRAINTS规则查询表?
- 9. 是否有工具可以比较复杂PSD文件中的图层?
- 10. 是否有比较/比较两个Java包的体面工具?
- 11. 获取我有以下的HTML DOM文档通过
- 12. 通过DOM文档
- 13. Python是否有任何可以通过省略前几行比较两个文件的标准库?
- 14. C++中是否有可用的语义比较工具?
- 15. 比较具有相同的结构
- 16. 通过一个比较结构
- 17. 是否有可能更改Visual Studio架构比较差异工具?
- 18. 是否可以通过make()来调用结构构造函数?
- 19. 可视化HTML文档树(DOM树)的工具
- 20. 是否有Python的文档工具?
- 21. 是否有允许异常的文件比较工具?
- 22. 是否有任何工具可以使用open GL
- 23. 是否有任何工具可以检查bash语法
- 24. 是否有任何工具可以自动安装软件?
- 25. 是否有任何工具可以轻松阅读JavaScript代码?
- 26. 是否有任何工具可以记录SVN存储库?
- 27. 是否有任何可以与github/bitbucket链接的CMS /工具?
- 28. 是否有任何工具,可以做PowerShell的C#代码
- 29. 是否有任何开源工具可以从URL查看XML?
- 30. 比较工具输出1/0 //是/否
可能重复[是否有任何工具,有比较的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