golng Xml 解组,无值
Golang Xml Unmarshal, No value
type VastHtml struct {
VAST struct {
Version string `xml:"version,attr"`
Ad struct {
Id string `xml:"id,attr"`
InLine struct {
AdSystem string `xml:"AdSystem"`
AdTitle string `xml:"AdTitle"`
Description string `xml:"Description"`
Error string `xml:"Error"`
Impression []string `xml:"Impression"`
Creatives struct {
Creative []struct {
Sequence string `xml:"sequence,attr"`
Id string `xml:"id,attr"`
Linear struct {
Duration string `xml:"Duration"`
TrackingEvents struct {
Tracking []string `xml:"Tracking"`
} `xml:"TrackingEvents"`
VideoClicks struct {
ClickThrough string `xml:"ClickThrough"`
CustomClick []string `xml:"CustomClick"`
} `xml:"VideoClicks"`
MediaFiles struct {
MediaFile []struct {
Delivery string `xml:"delivery,attr"`
Bitrate string `xml:"bitrate,attr"`
Width string `xml:"width,attr"`
Height string `xml:"height,attr"`
Type string `xml:"type,attr"`
} `xml:"MediaFile"`
} `xml:"MediaFiles"`
} `xml:"Linear"`
CompanionAds struct {
Companion []struct {
Width string `xml:"width,attr"`
Height string `xml:"height,attr"`
StaticResource string `xml:"StaticResource"`
TrackingEvents string `xml:"TrackingEvents"`
CompanionClickThrough string `xml:"CompanionClickThrough"`
} `xml:"Companion"`
} `xml:"CompanionAds"`
} `xml:"Creative"`
} `xml:"Creatives"`
Extensions string `xml:"Extensions"`
} `xml:"InLine"`
} `xml:"Ad"`
} `xml:"VAST"`
}
func main()
{
resp, err := http.Get("http://ad3.liverail.com/?LR_PUBLISHER_ID=1331&LR_CAMPAIGN_ID=229&LR_SCHEMA=vast2")
if err != nil {
fmt.Println(err)
os.Exit(1)
}
defer resp.Body.Close()
xmlDataFromHttp, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
fmt.Println(os.Stdout, string(xmlDataFromHttp))
// read xml http response
var xmlData VastHtml
err = xml.Unmarshal(xmlDataFromHttp, &xmlData)
if err != nil {
panic(err)
}
fmt.Printf("XML===>: ", xmlData.VAST)
}
大家好,
在对我从 URL 获得的 XmlVast 进行解组后,它只给出了结构但没有任何值。即使当我将 XmlVast 的内容复制到一个文件中并尝试解组它时,它也会给我相同的响应,但结构没有任何值。
提前谢谢你。
您正在尝试将根为 <VAST>
的 xml 文档解组为 VastHtml
类型的结构,其中包含 VAST
作为其第一个字段。
将 VAST
元素直接传递给 Unmarshal
函数(如果这是您要解码的内容)。
err = xml.Unmarshal(xmlDataFromHttp, &xmlData.VAST)
XML 输入在根部有一个 <VAST>
元素——这对应于结构中的 VastHtml.VAST
字段。因此,将其作为目标值传递给 xml.Unmarshal
:
err = xml.Unmarshal(xmlDataFromHttp, &xmlData.VAST)
(我同意 Lander 的观点,即深度嵌套的结构定义将成为一个问题)。
type VastHtml struct {
VAST struct {
Version string `xml:"version,attr"`
Ad struct {
Id string `xml:"id,attr"`
InLine struct {
AdSystem string `xml:"AdSystem"`
AdTitle string `xml:"AdTitle"`
Description string `xml:"Description"`
Error string `xml:"Error"`
Impression []string `xml:"Impression"`
Creatives struct {
Creative []struct {
Sequence string `xml:"sequence,attr"`
Id string `xml:"id,attr"`
Linear struct {
Duration string `xml:"Duration"`
TrackingEvents struct {
Tracking []string `xml:"Tracking"`
} `xml:"TrackingEvents"`
VideoClicks struct {
ClickThrough string `xml:"ClickThrough"`
CustomClick []string `xml:"CustomClick"`
} `xml:"VideoClicks"`
MediaFiles struct {
MediaFile []struct {
Delivery string `xml:"delivery,attr"`
Bitrate string `xml:"bitrate,attr"`
Width string `xml:"width,attr"`
Height string `xml:"height,attr"`
Type string `xml:"type,attr"`
} `xml:"MediaFile"`
} `xml:"MediaFiles"`
} `xml:"Linear"`
CompanionAds struct {
Companion []struct {
Width string `xml:"width,attr"`
Height string `xml:"height,attr"`
StaticResource string `xml:"StaticResource"`
TrackingEvents string `xml:"TrackingEvents"`
CompanionClickThrough string `xml:"CompanionClickThrough"`
} `xml:"Companion"`
} `xml:"CompanionAds"`
} `xml:"Creative"`
} `xml:"Creatives"`
Extensions string `xml:"Extensions"`
} `xml:"InLine"`
} `xml:"Ad"`
} `xml:"VAST"`
}
func main()
{
resp, err := http.Get("http://ad3.liverail.com/?LR_PUBLISHER_ID=1331&LR_CAMPAIGN_ID=229&LR_SCHEMA=vast2")
if err != nil {
fmt.Println(err)
os.Exit(1)
}
defer resp.Body.Close()
xmlDataFromHttp, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
fmt.Println(os.Stdout, string(xmlDataFromHttp))
// read xml http response
var xmlData VastHtml
err = xml.Unmarshal(xmlDataFromHttp, &xmlData)
if err != nil {
panic(err)
}
fmt.Printf("XML===>: ", xmlData.VAST)
}
大家好, 在对我从 URL 获得的 XmlVast 进行解组后,它只给出了结构但没有任何值。即使当我将 XmlVast 的内容复制到一个文件中并尝试解组它时,它也会给我相同的响应,但结构没有任何值。
提前谢谢你。
您正在尝试将根为 <VAST>
的 xml 文档解组为 VastHtml
类型的结构,其中包含 VAST
作为其第一个字段。
将 VAST
元素直接传递给 Unmarshal
函数(如果这是您要解码的内容)。
err = xml.Unmarshal(xmlDataFromHttp, &xmlData.VAST)
XML 输入在根部有一个 <VAST>
元素——这对应于结构中的 VastHtml.VAST
字段。因此,将其作为目标值传递给 xml.Unmarshal
:
err = xml.Unmarshal(xmlDataFromHttp, &xmlData.VAST)
(我同意 Lander 的观点,即深度嵌套的结构定义将成为一个问题)。