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>
parçaları dışında bir belge yapmaktan html.Parse
durdurmak için bir yol (yani önlemek <html>
ekleyerek <body>
vs.) var mı? Ben html.ParseFragment
farkındayım ama aynı davranışı sergiliyor gibi görünüyor.
Sen <span>
sonra aşağıdaki gibi bir şey yapıyor gibi bir ebeveyn eleman ile ayrıştırılması metni sararak etrafında alabilirsiniz:
n = n.FirstChild.LastChild.FirstChild
ama az söylemek, iyi, kludgy görünüyor.
İdeal olarak şunları yapmak istiyorum: girdiyi girin, içindeki düğümleri kaldırın veya kaldırın ve sonuç eksik bir belge olsa bile sonucu bir dizeye yazın.
Not varlığı [ 'goquery'] (https://github.com/PuerkitoBio/goquery) yapmak istediğiniz görevler için kullanışlı olabilir. – nemo
Teşekkür ederim, ve tamlık için, geçmişte kullandığım Jeremy'nin [go-html-transform] (https://code.google.com/p/go-html-transform) bir kez daha bahsedeceğim. Ben exp/html (şimdi go.net/html) ile 1.2'den beri standart kütüphaneye girmesi muhtemel görünüyor, ancak bu üçüncü parti projeleri de ortaya çıkıyor görmek için iyi gelmeye çalışıyorum. –