From 3a39d110f0f2a3e976df1e810a861c602a634d14 Mon Sep 17 00:00:00 2001 From: Peter De Wachter Date: Sat, 2 Mar 2019 16:38:02 +0100 Subject: Accept HTML entities when parsing XML Every once in a while, one of my feeds would throw an XML parse error because it used ` ` or some other HTML entity. I feel Miniflux should be lenient here, and Go already has a handy hook to make this work. --- reader/atom/parser.go | 1 + reader/opml/parser.go | 1 + reader/parser/format.go | 1 + reader/rdf/parser.go | 1 + reader/rss/parser.go | 1 + 5 files changed, 5 insertions(+) (limited to 'reader') diff --git a/reader/atom/parser.go b/reader/atom/parser.go index 152626c..85be4b5 100644 --- a/reader/atom/parser.go +++ b/reader/atom/parser.go @@ -17,6 +17,7 @@ import ( func Parse(data io.Reader) (*model.Feed, *errors.LocalizedError) { atomFeed := new(atomFeed) decoder := xml.NewDecoder(data) + decoder.Entity = xml.HTMLEntity decoder.CharsetReader = encoding.CharsetReader err := decoder.Decode(atomFeed) diff --git a/reader/opml/parser.go b/reader/opml/parser.go index 1c24a70..1bdec20 100644 --- a/reader/opml/parser.go +++ b/reader/opml/parser.go @@ -16,6 +16,7 @@ import ( func Parse(data io.Reader) (SubcriptionList, *errors.LocalizedError) { feeds := new(opml) decoder := xml.NewDecoder(data) + decoder.Entity = xml.HTMLEntity decoder.CharsetReader = encoding.CharsetReader err := decoder.Decode(feeds) diff --git a/reader/parser/format.go b/reader/parser/format.go index 87963d3..fef14fe 100644 --- a/reader/parser/format.go +++ b/reader/parser/format.go @@ -27,6 +27,7 @@ func DetectFeedFormat(data string) string { } decoder := xml.NewDecoder(strings.NewReader(data)) + decoder.Entity = xml.HTMLEntity decoder.CharsetReader = encoding.CharsetReader for { diff --git a/reader/rdf/parser.go b/reader/rdf/parser.go index 90eb1dc..f942317 100644 --- a/reader/rdf/parser.go +++ b/reader/rdf/parser.go @@ -17,6 +17,7 @@ import ( func Parse(data io.Reader) (*model.Feed, *errors.LocalizedError) { feed := new(rdfFeed) decoder := xml.NewDecoder(data) + decoder.Entity = xml.HTMLEntity decoder.CharsetReader = encoding.CharsetReader err := decoder.Decode(feed) diff --git a/reader/rss/parser.go b/reader/rss/parser.go index 96339ae..2b46405 100644 --- a/reader/rss/parser.go +++ b/reader/rss/parser.go @@ -17,6 +17,7 @@ import ( func Parse(data io.Reader) (*model.Feed, *errors.LocalizedError) { feed := new(rssFeed) decoder := xml.NewDecoder(data) + decoder.Entity = xml.HTMLEntity decoder.CharsetReader = encoding.CharsetReader err := decoder.Decode(feed) -- cgit v1.2.3