Exemple #1
0
func main() {
	// fmt.Println(string(data))
	rdr := bytes.NewReader(data)
	var m mxj.Map
	var err error
	// We read processing docs sequentially.
	// Un-rooted ProcInst or Comments are processed AND just reencoded. (XmlSeqIndent() knows how, now.)
	for m, err = mxj.NewMapXmlSeqReader(rdr); m != nil || err != io.EOF; m, err = mxj.NewMapXmlSeqReader(rdr) {
		if err != nil {
			if err != mxj.NO_ROOT {
				fmt.Println("NewMapXmlSeq err:", err)
				fmt.Println("m:", m)
			} else if m != nil {
				x, _ := m.XmlSeqIndent("", "  ")
				fmt.Println(string(x))
			}
			continue
		}
		// fmt.Println(m.StringIndent())

		// We have Two different arrays of Items in the XML doc, one nested in the other.
		if err = copyCmts(m, "WebTest.Items"); err != nil {
			fmt.Println("err:", err)
		}
		if err = copyCmts(m, "WebTest.Items.TransactionTimer.Items"); err != nil {
			fmt.Println("err:", err)
		}
		// re-encode the map with the Items.Comment[#seq==n].#attr.CommentText
		// values copied to the Items.Request[#seq==n+1].#attr.ReportingName elements.
		b, err := m.XmlSeqIndent("", "  ")
		if err != nil {
			fmt.Println("XmlIndent err:", err)
			return
		}
		fmt.Println(string(b))
	}
}