我使用goquery 的函数.Each()
递归到子元素中。有没有办法确定这是否是父母的第一个(或最后一个)孩子?我尝试删除 HTML 节点的起始和尾随空格。检查第一个孩子可能是一个测试问题i == 0
。但是最后一个子元素呢?
到目前为止,这是我的代码:
package main
import (
"fmt"
"io"
"os"
"strings"
"github.com/PuerkitoBio/goquery"
)
// recursive function
func dumpElement(i int, sel *goquery.Selection) {
fmt.Println("dump Element - is this the first or last element? I don't know")
sel.Contents().Each(dumpElement)
}
func startRecursion(r io.Reader) error {
g, err := goquery.NewDocumentFromReader(r)
if err != nil {
return err
}
g.Find(":root > body").Each(dumpElement)
return nil
}
func main() {
doc := `<!DOCTYPE html>
<html><head><title>foo</title></head><body>
<div class="bla">foo <b> bar </b> baz</div>
</body></html>`
if err := startRecursion(strings.NewReader(doc)); err != nil {
os.Exit(-1)
}
}