func readAtomChannel(ns string, node *xmlx.Node) *Channel { ch := &Channel{ Title: node.S(ns, "title"), LastBuildDate: node.S(ns, "updated"), Id: node.S(ns, "id"), Rights: node.S(ns, "rights"), } for _, v := range node.SelectNodesDirect(ns, "link") { ch.Links = append(ch.Links, Link{ Href: v.As("", "href"), Rel: v.As("", "rel"), Type: v.As("", "type"), HrefLang: v.As("", "hreflang"), }) } if tn := node.SelectNode(ns, "subtitle"); tn != nil { ch.SubTitle = SubTitle{ Type: tn.As("", "type"), Text: tn.GetValue(), } } if tn := node.SelectNode(ns, "generator"); tn != nil { ch.Generator = Generator{ Uri: tn.As("", "uri"), Version: tn.As("", "version"), Text: tn.GetValue(), } } if tn := node.SelectNode(ns, "author"); tn != nil { ch.Author = Author{ Name: tn.S("", "name"), Uri: tn.S("", "uri"), Email: tn.S("", "email"), } } for _, item := range node.SelectNodes(ns, "entry") { ch.Items = append(ch.Items, readAtomItem(ns, item)) } return ch }