代码http://play.golang.org/p/PlOMw4wfT2
我想在解组时保留一些XML标记中的子元素。这是我的代码:
package main
import (
"encoding/xml"
"log"
)
func main() {
xmltext := []byte(`<Root><Foo>text text text <a href="url">foo bar</a> and more text.</Foo></Root>`)
type mystruct struct {
Foo string `xml:",innerxml"`
}
v := &mystruct{}
err := xml.Unmarshal(xmltext, v)
if err != nil {
log.Fatal(err)
}
log.Println(v.Foo)
}
结果是:
<Foo>text text text <a href="url">foo bar</a> and more text.</Foo>
但我想得到
text text text <a href="url">foo bar</a> and more text.
(没有周围的Foo标签)
那就是:我想保留元素Foo的“字符串值”(不是XPath意义上的字符串值)。
如何在没有<Foo>
和</Foo>
的情况下从元素Foo获取内容?
答案 0 :(得分:0)
,innerxml
包含XML标记的内容(它的名称是什么)。因此,我必须更深入一级:
package main
import (
"encoding/xml"
"log"
)
func main() {
xmltext := []byte(`<Root><Foo>text text text <a href="url">foo bar</a> and more text.</Foo></Root>`)
type text struct {
Text string `xml:",innerxml"`
}
type mystruct struct {
Foo text
}
v := &mystruct{}
err := xml.Unmarshal(xmltext, v)
if err != nil {
log.Fatal(err)
}
log.Println(v.Foo.Text)
// text text text <a href="url">foo bar</a> and more text.
}