Skip to content

Instantly share code, notes, and snippets.

@fallsimply
Created February 19, 2021 01:20
Show Gist options
  • Save fallsimply/a6aa937bcac93196a28cb06eeda726f9 to your computer and use it in GitHub Desktop.
Save fallsimply/a6aa937bcac93196a28cb06eeda726f9 to your computer and use it in GitHub Desktop.
package main
import (
"fmt"
"log"
"strings"
"golang.org/x/net/html"
)
func main() {
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)
var b strings.Builder
html.Render(&b, doc)
txt := string([]byte(b.String())[25:b.Len()-14])
fmt.Println(txt)
fmt.Println(s)
fmt.Println(txt == s)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment