我們需要使用Go解析巨大的XML文件。我們希望使用類似SAX的基於事件的算法,使用xml.NewDecoder()
和decoder.Token()
庫調用。我們用XML註釋創建了適當的結構類型。一切都很容易到目前爲止。使用Go解析巨大的XML文件
現在,我們通過該文件並檢測xml.StartElement
令牌。問題來了。我們只需要解碼這個起始令牌的屬性並繼續到它的內容。如果我們撥打token.DecodeElement()
,則整個內容將在我們的場景中「解碼」或跳過。
如何僅解碼特定StartElement
的屬性並繼續到元素的正文?
根本不需要'token.DecodeElement()'。只需繼續使用'for {token,_:= dec.Token();開關x:=標記。(類型){...}}循環。 – topskip 2014-11-05 12:17:43
但是如何解析屬性?我們不希望像'x:= token.Attr [3] .Value' ... – eeq 2014-11-05 12:30:25
爲什麼不呢?這就是我所做的:'for _,v:= range x.Attr {...}'它對我來說足夠好用了。 – topskip 2014-11-05 12:51:30