是否有比较HTML文档的工具,如:
<p b="1" a="0 "> a b
c </p>
(作为C字符串:"<p> a b\nc </p>"
)等于:
<p a="0 " b="1">a b c</p>
请注意:
为什么我要
我正致力于Markdown Test Suite,旨在衡量降价引擎合规性和便携性。
我们有降价输入,预期的HTML输出,并想确定生成的HTML输出是否等于预期的输出。
问题是Markdown未指定,因此我们无法直接比较两个HTML字符串。
实际测试代码为here,如果您想尝试解决方案,只需修改run-tests.py#dom_normalize
。
我尝试过的事情
beautifulsoup。订购属性,但不能很好地处理空格?
函数formatter
正则表达式修改可能有效,但我没有看到区分节点内部和属性的方法。
像这样的Python解决方案是理想的。
寻找类似于isEqualNode()
的Javascript函数(因为忽略nodeVaue
)而无法正常工作+一些无头JS引擎。无法找到。
如果没有更好的东西,我只需要将自己的输出格式化程序前端编写到某个HTML解析器中。
答案 0 :(得分:0)
我最终制作了一个自定义HTML渲染器,根据Python的stdlib HTMLParser
对事物进行规范化。
用法和docstrig测试位于:https://github.com/karlcow/markdown-testsuite/blob/749ed0b812ffcb8b6cc56f93ff94c6fdfb6bd4a2/run-tests.py#L74