package main
import (
"bytes"
"code.google.com/p/go.net/html"
"fmt"
"log"
"strings"
)
func main() {
s := "Blah. <b>Blah.</b> Blah."
n, err := html.Parse(strings.NewReader(s))
if err != nil {
log.Fatalf("Parse error: %s", err)
}
var buf bytes.Buffer
if err := html.Render(&buf, n); err != nil {
log.Fatalf("Render error: %s", err)
}
fmt.Println(buf.String())
}
出力:
<html><head></head><body>Blah. <b>Blah.</b> Blah.</body></html>
フラグメントからドキュメントを作成するのをやめる方法はありますかhtml.Parse
(つまり、追加を避ける<html>
など<body>
)?私は知ってhtml.ParseFragment
いますが、それは同じ振る舞いを示しているようです。
解析するテキストを親要素でラップして<span>
、次のようにすることで回避できます。
n = n.FirstChild.LastChild.FirstChild
しかし、それは控えめに言っても、まあ、ぎこちないようです。
理想的には、入力を受け入れ、その中にあるノードを操作または削除し、結果が不完全なドキュメントであっても、結果を文字列に書き戻したいと思います。