英文:
Unmarshal a nested OPML Document
问题
我正在尝试解析一个简单的嵌套opml文档。问题出在当我有嵌套的opml时,我无法确定结构。我将代码放在下面。请告诉我如何解析Outline
结构的多层嵌套。
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)
}
英文:
I am trying to unmarshal a simple nested opml document. The problem comes when I have nested opml and I am unable to decide on structure. I am putting the code below. Please let me know how can I parse the multi level of nesting of the Outline
struct.
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
得分: 1
你需要使用指针
type Outline struct {
Text string `xml:"text,attr"`
Note string `xml:"_note,attr"`
Outline *Outline `xml:"outline"`
}
http://play.golang.org/p/f1UqEkJq4S
英文:
you need use pointer
type Outline struct {
Text string `xml:"text,attr"`
Note string `xml:"_note,attr"`
Outline *Outline `xml:"outline"`
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论