aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrett Vickers <brett@beevik.com>2018-10-27 13:23:49 -0700
committerBrett Vickers <brett@beevik.com>2018-10-27 13:23:49 -0700
commitdd07e7c63255520ef106bb803843105c329bb577 (patch)
treeda438bcf3107c7cc124adfa628bcbccc0daf6a2f
parent69ce3ef503e09b17661f017543c63d9fafc505d1 (diff)
downloadgo-etree-dd07e7c63255520ef106bb803843105c329bb577.tar.gz
Bug fix: Parsing different encodings.
-rw-r--r--etree.go7
-rw-r--r--etree_test.go16
2 files changed, 21 insertions, 2 deletions
diff --git a/etree.go b/etree.go
index d0c913e..dd75456 100644
--- a/etree.go
+++ b/etree.go
@@ -38,7 +38,12 @@ type ReadSettings struct {
// newReadSettings creates a default ReadSettings record.
func newReadSettings() ReadSettings {
- return ReadSettings{}
+ return ReadSettings{
+ CharsetReader: func(label string, input io.Reader) (io.Reader, error) {
+ return input, nil
+ },
+ Permissive: false,
+ }
}
// WriteSettings allow for changing the serialization behavior of the WriteTo*
diff --git a/etree_test.go b/etree_test.go
index dd63ed8..7343b77 100644
--- a/etree_test.go
+++ b/etree_test.go
@@ -16,7 +16,6 @@ func checkEq(t *testing.T, got, want string) {
}
func TestDocument(t *testing.T) {
-
// Create a document
doc := NewDocument()
doc.CreateProcInst("xml", `version="1.0" encoding="UTF-8"`)
@@ -578,3 +577,18 @@ func TestSortAttrs(t *testing.T) {
out, _ := doc.WriteToString()
checkEq(t, out, `<el AAA="1" Foo="2" a01="3" aaa="4" foo="5" z="6" สวัสดี="7" a:AAA="8" a:ZZZ="9"/>`+"\n")
}
+
+func TestCharsetReaderEncoding(t *testing.T) {
+ cases := []string{
+ `<?xml version="1.0" encoding="ISO-8859-1"?><foo></foo>`,
+ `<?xml version="1.0" encoding="UTF-8"?><foo></foo>`,
+ `<?xml version="1.0" encoding="US-ASCII"?><foo></foo>`,
+ }
+
+ for _, c := range cases {
+ doc := NewDocument()
+ if err := doc.ReadFromBytes([]byte(c)); err != nil {
+ t.Error(err)
+ }
+ }
+}