2012-11-15 59 views
2

試圖瞭解如何在Go中解組XML。通讀多個示例和stackoverflow問題。我想要的是在系統上安裝所有修補程序的一部分。我甚至無法獲得解組的補丁,沒有錯誤,只是一個空白的片段。大概做一些基本錯誤的事情,先謝謝你的任何建議。解決了這個問題xml

<probe version="1.3" date="2012-03-26:17:10"> 
    <properties> 
    </properties> 
    <patches group="server"> 
     <file name="5002012-02-09CR00000server.jar"/> 
     <file name="5002012-02-17CR00001server.jar"/> 
    </patches> 
    <patches group="client"> 
     <file name="5002012-02-09CR00000client.jar"/> 
     <file name="5002012-02-17CR00001client.jar"/> 
    </patches> 
</probe> 
type Patch struct { 
    group string `xml:"group,attr"` 
} 

type Probe struct { 
    XMLName xml.Name `xml"probe"` 
    Patches []Patch `xml:"patches"` 
} 

回答

6

我相信你的問題是在xml包不填充未導出字段。 xml文檔說:

由於Unmarshal使用反射包,因此它只能分配給導出(大寫)字段。

所有你需要做的是改變groupGroup

type Patch struct { Group string `xml:"group,attr"` } 

您在這裏有一個工作示例: http://play.golang.org/p/koSzZr-Bdn

+0

我希望我能投了你更多。那就是問題所在,我嘗試了太多變化,並且一路上打錯了。 – KaizenSoze

+0

容易發生。我從來沒有用過'xml',但是'json'也有類似的問題,它也使用反射。樂意效勞! – ANisus