aboutsummaryrefslogtreecommitdiffhomepage
path: root/reader
diff options
context:
space:
mode:
authorGravatar Peter De Wachter <pdewacht@gmail.com>2019-03-02 16:38:02 +0100
committerGravatar Frédéric Guillot <fred@miniflux.net>2019-08-15 21:26:07 -0700
commit3a39d110f0f2a3e976df1e810a861c602a634d14 (patch)
tree5efc55fc9294337ad270cfdaaaff8986d95de6a7 /reader
parent6d39f2a4cb6b00e11defff08dab82ef3a5df5a42 (diff)
Accept HTML entities when parsing XML
Every once in a while, one of my feeds would throw an XML parse error because it used `&nbsp;` or some other HTML entity. I feel Miniflux should be lenient here, and Go already has a handy hook to make this work.
Diffstat (limited to 'reader')
-rw-r--r--reader/atom/parser.go1
-rw-r--r--reader/opml/parser.go1
-rw-r--r--reader/parser/format.go1
-rw-r--r--reader/rdf/parser.go1
-rw-r--r--reader/rss/parser.go1
5 files changed, 5 insertions, 0 deletions
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)