【发布时间】:2016-05-28 11:48:38
【问题描述】:
我正在尝试开发一个测试套件,它可以检查 HTML 片段/文件在规范上是等价的。我很惊讶地发现,如果我解析相同的字符串或文件,https://godoc.org/golang.org/x/net/html#Node 会比较不同。我错过了什么?
希望这能说明问题:
package main
import (
"fmt"
"strings"
"golang.org/x/net/html"
)
func main() {
s := `<h1>
test
</h1><p>foo</p>`
// s2 := `<h1>test</h1><p>foo</p>`
doc, _ := html.Parse(strings.NewReader(s))
doc2, _ := html.Parse(strings.NewReader(s))
if doc == doc2 {
fmt.Println("HTML is the same") // Expected this
} else {
fmt.Println("HTML is not the same") // Got this
}
}
HTML 不一样
【问题讨论】:
-
检查 html.Parse 实际返回的内容。
-
是的,我正在尝试走路...s.natalian.org/2016-05-28/compare2.go 或者你是什么意思?
-
在 compare2.go 中:在最后一次迭代中,c 为 nil,所以它到达了 Downhere,但这似乎与 doc 和 doc2 持有不同地址的问题不同.
-
reflect.DeepEqual可能会起作用
标签: html go canonicalization