Fix RSS feed parsing due to changes in go-pkg-xmlx.
Due to the PR jteeuwen/go-pkg-xmlx#16, when using SelectNodes there is no longer any hidden recursion. Due to RSS's structure, there is a root document node. These two pieces break the RSS parsing. Fix by first selecting the root document node, and then selecting the channels for parsing.
This commit is contained in:
parent
20d050f908
commit
66eea2e6af
17
rss.go
17
rss.go
|
@ -1,6 +1,10 @@
|
||||||
package feeder
|
package feeder
|
||||||
|
|
||||||
import xmlx "github.com/jteeuwen/go-pkg-xmlx"
|
import (
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
xmlx "github.com/jteeuwen/go-pkg-xmlx"
|
||||||
|
)
|
||||||
|
|
||||||
func (this *Feed) readRss2(doc *xmlx.Document) (err error) {
|
func (this *Feed) readRss2(doc *xmlx.Document) (err error) {
|
||||||
days := make(map[string]int)
|
days := make(map[string]int)
|
||||||
|
@ -34,7 +38,16 @@ func (this *Feed) readRss2(doc *xmlx.Document) (err error) {
|
||||||
var list, tl []*xmlx.Node
|
var list, tl []*xmlx.Node
|
||||||
const ns = "*"
|
const ns = "*"
|
||||||
|
|
||||||
channels := doc.SelectNodes(ns, "channel")
|
root := doc.SelectNode(ns, "rss")
|
||||||
|
if root == nil {
|
||||||
|
root = doc.SelectNode(ns, "RDF")
|
||||||
|
}
|
||||||
|
|
||||||
|
if root == nil {
|
||||||
|
return errors.New("Failed to find rss/rdf node in XML.")
|
||||||
|
}
|
||||||
|
|
||||||
|
channels := root.SelectNodes(ns, "channel")
|
||||||
for _, node := range channels {
|
for _, node := range channels {
|
||||||
if ch = getChan(node.S(ns, "pubDate"), node.S(ns, "title")); ch == nil {
|
if ch = getChan(node.S(ns, "pubDate"), node.S(ns, "title")); ch == nil {
|
||||||
ch = new(Channel)
|
ch = new(Channel)
|
||||||
|
|
Loading…
Reference in New Issue