1. 程式人生 > >golang 解析大xml檔案

golang 解析大xml檔案

golang 解析很大的xml

in, err := os.Open(os.Args[1])

	defer in.Close()
	decoder := xml.NewDecoder(in)
	var t xml.Token
	var text bool
	for t, err = decoder.Token(); err == nil; t, err = decoder.Token() {

		switch token := t.(type) {
		case xml.StartElement:
			name := token.Name.Local
			if name == "text" {
				text = true
			}
		case xml.EndElement:
			text = false
		case xml.CharData:
			if text {
				content := string([]byte(token))
				fmt.Println(content)
				return
			}
		default:
			return
			//
		}
	}

如果解析的是html,則可以指定如下屬性,用於忽略“不正規”的html標籤,

decoder.Strict = false decoder.AutoClose = xml.HTMLAutoClose 下面屬性,可以進行字元轉義,預設只轉義 這5個 < > & ' " decoder.Entity = xml.HTMLEntity