// 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 ( | |
"fmt" | |
"log" | |
"strings" | |
"golang.org/x/net/html" | |
) | |
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 | |
} |