LoginSignup
3
3

More than 5 years have passed since last update.

[golang]XMLを読む(SAX風)

Posted at

encoding/xmlパッケージはmarshalとunmarshal以外にも
普通にXMLファイルを読むのにも使える。

import (
  "encoding/xml"
  "io"
)
//io.ReaderをDecoderに渡す
d := xml.NewDecoder(reader) 
for {
        token, err := d.Token()
        if err == io.EOF {
            err = nil
            break
        }
        if err != nil {
            panic(err)
        }
        switch token.(type) {
        case xml.StartElement:
            //do something
        case xml.EndElement:
            //do something
        case xml.CharData:
            //do something
        case xml.Comment:
            //do something
        case xml.ProcInst:
            //do something
        case xml.Directive:
            //do something
        default:
            panic("unknown xml token.")
        }
}

strictでないHTMLを読むなら

d.Strict = false
d.AutoClose = xml.HTMLAutoClose
d.Entity = xml.HTMLEntity

とかやると幸せになれそう。

Handler作ればSAXParserみたいのも作れる。
https://github.com/kokardy/saxlike

・・・・・・のだけど、本当はDOM(みたいなの)が欲しい。

3
3
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3