If I have the following XML:
<blah>
<a>stuff here</a>
<b>other stuff</b>
<b>more stuff</b>
</blah>
I'd like to be able to unmarshal the innerxml of <blah>
, but only include the <b>
elements and all raw tags, and exclude everything else. In this example, my raw innerxml result needs to be:
<b>other stuff</b>
<b>more stuff</b>
Not sure if this is doable with struct tags or if I have to write a custom unmarshaler function.
Tried the following code:
package main
import (
"encoding/xml"
"fmt"
)
type blah struct {
XMLName xml.Name `xml:"blah"`
RawXML string `xml:",innerxml"`
}
func main() {
blahXML := []byte(`<blah>
<a>stuff here</a>
<b>other stuff</b>
<b>more stuff</b>
</blah>`)
var blah blah
if err := xml.Unmarshal(blahXML, &blah); err != nil {
panic(err)
}
fmt.Printf("%s
", blah.RawXML)
}
Which returns all of the innerxml:
<a>stuff here</a>
<b>other stuff</b>
<b>more stuff</b>
Not sure how to just return the raw <b>
lines.
Thanks!