2015-08-27 4 views
1

Я пытаюсь размонтировать простой вложенный документ opml. Проблема возникает, когда у меня есть вложенный opml, и я не могу принять решение о структуре. Я помещаю код ниже. Пожалуйста, дайте мне знать, как я могу разобрать многоуровневое размещение структуры Outline.Unmarshal вложенный документ OPML

http://play.golang.org/p/FobiL1JDdb

package main 

    import (
     "encoding/xml" 
     "fmt" 
    ) 

    var response = `<opml version='1.0'> 
    <head> 
     <title>More Cases</title> 
     <expansionState>1,6,26</expansionState> 
    </head> 
    <body> 
     <outline text='Testing' _note='indeterminate'> 
     <outline text='Weekly' _status='indeterminate'> 
     </outline> 
     </outline> 
    </body> 
    </opml>` 

    type Opml struct { 
     XMLName xml.Name 
     Version string `xml:"version,attr"` 
     Head Head `xml:"head"` 
     Body Body `xml:"body"` 
    } 

    type Head struct { 
     Title   string `xml:"title"` 
     ExpansionState string `xml:"expansionState"` 
    } 

    type Body struct { 
     Outline Outline `xml:"outline"` 
    } 
    type Outline struct { 
     Text string `xml:"text,attr"` 
     Note string `xml:"_note,attr"` 
    } 

    func main() { 

     fmt.Println("UnMrashal XML") 
     opml := &Opml{} 
     xml.Unmarshal([]byte(response), opml) 
     fmt.Println(opml) 
    } 

ответ

1

вам нужно использовать указатель

type Outline struct { 
    Text string `xml:"text,attr"` 
    Note string `xml:"_note,attr"` 
    Outline *Outline `xml:"outline"` 
} 

http://play.golang.org/p/f1UqEkJq4S

+0

большое спасибо. –