Commit 9dc31526 authored by Nigel Tao's avatar Nigel Tao

exp/html: update package docs and add an example; a node's children is

a linked list, not a slice.

R=r, minux.ma
CC=golang-dev
https://golang.org/cl/6618055
parent c5ebeff3
...@@ -84,7 +84,7 @@ example, to process each anchor node in depth-first order: ...@@ -84,7 +84,7 @@ example, to process each anchor node in depth-first order:
if n.Type == html.ElementNode && n.Data == "a" { if n.Type == html.ElementNode && n.Data == "a" {
// Do something with n... // Do something with n...
} }
for _, c := range n.Child { for c := n.FirstChild; c != nil; c = c.NextSibling {
f(c) f(c)
} }
} }
......
// Copyright 2012 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// This example demonstrates parsing HTML data and walking the resulting tree.
package html_test
import (
"exp/html"
"fmt"
"log"
"strings"
)
func ExampleParse() {
s := `<p>Links:</p><ul><li><a href="foo">Foo</a><li><a href="/bar/baz">BarBaz</a></ul>`
doc, err := html.Parse(strings.NewReader(s))
if err != nil {
log.Fatal(err)
}
var f func(*html.Node)
f = func(n *html.Node) {
if n.Type == html.ElementNode && n.Data == "a" {
for _, a := range n.Attr {
if a.Key == "href" {
fmt.Println(a.Val)
break
}
}
}
for c := n.FirstChild; c != nil; c = c.NextSibling {
f(c)
}
}
f(doc)
// Output:
// foo
// /bar/baz
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment