diff options
author | Brett Vickers <brett@beevik.com> | 2018-10-27 13:23:49 -0700 |
---|---|---|
committer | Brett Vickers <brett@beevik.com> | 2018-10-27 13:23:49 -0700 |
commit | dd07e7c63255520ef106bb803843105c329bb577 (patch) | |
tree | da438bcf3107c7cc124adfa628bcbccc0daf6a2f | |
parent | 69ce3ef503e09b17661f017543c63d9fafc505d1 (diff) | |
download | go-etree-dd07e7c63255520ef106bb803843105c329bb577.tar.gz |
Bug fix: Parsing different encodings.
-rw-r--r-- | etree.go | 7 | ||||
-rw-r--r-- | etree_test.go | 16 |
2 files changed, 21 insertions, 2 deletions
@@ -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) + } + } +} |