In VAST spec, an XML file may contains several nodes with the same name - for example, several Impression
nodes, which differ only in their id
.
Consider the following example:
<?xml version="1.0" encoding="UTF-8"?>
<VAST xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0" xsi:noNamespaceSchemaLocation="vast.xsd">
<Ad id="812030">
<InLine>
<AdSystem>FT</AdSystem>
<AdTitle>Flashtalking mobile vast template 2.0</AdTitle>
<Description>date of revision 10-04-14</Description>
<Impression id="ft_vast_i"><![CDATA[http://servedby.flashtalking.com/imp/1/31714;812030;201;gif;DailyMail;640x360VASTHTML5/?ft_creative=377314&ft_configuration=0&cachebuster=1076585830]]></Impression>
<Impression id="3rdparty" />
<Impression id="3rdparty" />
<Impression id="3rdparty" />
<Impression id="3rdparty" />
<Impression id="3rdparty" />
<Impression id="3rdparty" />
<Creatives>
<Creative sequence="1">
<Linear>
<Duration>00:00:15</Duration>
<TrackingEvents>
<Tracking event="start"><![CDATA[http://stat.flashtalking.com/reportV3/ft.stat?34923237-0-13-0-27565A88066DCD-1076585830]]></Tracking>
<Tracking event="midpoint"><![CDATA[http://stat.flashtalking.com/reportV3/ft.stat?34923237-0-15-0-27565A88066DCD-1076585830]]></Tracking>
<Tracking event="firstQuartile"><![CDATA[http://stat.flashtalking.com/reportV3/ft.stat?34923237-0-14-0-27565A88066DCD-1076585830]]></Tracking>
<Tracking event="thirdQuartile"><![CDATA[http://stat.flashtalking.com/reportV3/ft.stat?34923237-0-16-0-27565A88066DCD-1076585830]]></Tracking>
<Tracking event="complete"><![CDATA[http://stat.flashtalking.com/reportV3/ft.stat?34923237-0-17-0-27565A88066DCD-1076585830]]></Tracking>
<Tracking event="mute"><![CDATA[http://stat.flashtalking.com/reportV3/ft.stat?34923237-0-38-0-27565A88066DCD-1076585830]]></Tracking>
<Tracking event="fullscreen"><![CDATA[http://stat.flashtalking.com/reportV3/ft.stat?34923237-0-313-0-27565A88066DCD-1076585830]]></Tracking>
</TrackingEvents>
<VideoClicks>
<ClickThrough><![CDATA[http://servedby.flashtalking.com/click/1/31714;812030;377314;211;0/?random=1076585830&ft_width=640&ft_height=360&url=http://www.google.co.uk]]></ClickThrough>
</VideoClicks>
<MediaFiles>
<MediaFile id="1" delivery="progressive" type="video/mp4" bitrate="524" width="640" height="360"><![CDATA[http://cdn.flashtalking.com/17601/30988_26752_WacoClub_640x360_384kbps.mp4]]></MediaFile>
</MediaFiles>
</Linear>
</Creative>
<Creative sequence="1">
<CompanionAds />
</Creative>
</Creatives>
</InLine>
</Ad>
</VAST>
Note the multiple Impression
nodes which differ only by their id
attribute (and in fact even that may sometime be identical).
Is there a way to represent such structure with Golang in a way that will maintain the ability to marshal and unmarshal the xml with the encoding/xml
package?