我有html文件
<value>1,2,3</value>
<value>,1,3,5</value>
以及使用下面的代码提取文本的内容,但它只打印'value'标签(css选择器)。如何使用golang html包从标签之间打印文本?
z := html.NewTokenizer(b)
for {
tt := z.Next()
switch {
case tt == html.ErrorToken:
return
case tt == html.StartTagToken:
t := z.Token()
isAnchor := t.Data == "value"
if isAnchor {
fmt.Println(t.Data)
}
}
}
答案 0 :(得分:4)
这似乎对我有用:
r := strings.NewReader("<value>1,2,3</value><value>,1,3,5</value>")
doc, err := html.Parse(r)
if err != nil {
log.Fatal(err)
}
var f func(*html.Node)
f = func(n *html.Node) {
if n.Type == html.ElementNode && n.Data == "value" {
fmt.Println(n.FirstChild.Data)
}
for c := n.FirstChild; c != nil; c = c.NextSibling {
f(c)
}
}
f(doc)
我认为关键是在找到&#34;值&#34;后抓住FirstChild。节点
答案 1 :(得分:1)
您必须在下一个Text()
上使用Token
方法。
if isAnchor := t.Data == "value"; isAnchor {
z.Next()
fmt.Println(z.Text())
}