我正在尝试提供一个测试套件,用于检查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不一样
答案 0 :(得分:0)
最简单的方法是使用反射,因为html.Parse
返回*Node
个对象。比较Go中的两个对象需要reflect.DeepEqual
。
if reflect.DeepEqual(doc, doc2) {
fmt.Println("HTML is the same")
} else {
fmt.Println("HTML is not the same")
}
这打印出来&#34; HTML是相同的&#34;。