У меня следующий код :
package main
import (
"encoding/xml"
"fmt"
)
func main() {
xr := &xmlResponse{}
if err := xml.Unmarshal([]byte(x), &xr); err != nil {
panic(err)
}
fmt.Printf("%+v", xr)
}
type xmlResponse struct {
//Title string `xml:"title,omitempty"`
Title struct {
BoldWords []struct {
Bold string `xml:",chardata"`
} `xml:"bold,omitempty"`
Title string `xml:",chardata" `
} `xml:"title,omitempty"`
}
var x = `<?xml version="1.0" encoding="utf-8"?>
<mytag version="1.0">
<title><bold>Go</bold> is a programming language. I repeat: <bold>Go</bold> is a programming language.</title>
</mytag>`
Это выводит:
&{Title:{BoldWords:[{Bold:Go} {Bold:Go}] Title: is a programming language. I repeat: is a programming language.}}
Как мне получить:
<bold>Go</bold> is a programming language. I repeat: <bold>Go</bold> is a programming language.
Другими словами, мне нужны не только метки, но и их правильное место, а не просто кусок выделенных элементов.Попытка получить его просто как строку (например, раскомментировать первый «Заголовок» в структуре xmlResponse) полностью исключает выделенные жирным шрифтом элементы.