diff options
author | Silvan Jegen <s.jegen@gmail.com> | 2015-06-14 15:57:00 +0200 |
---|---|---|
committer | Silvan Jegen <s.jegen@gmail.com> | 2015-06-14 15:57:00 +0200 |
commit | 3018cef11b595dde582f22a48685f15756d18b9b (patch) | |
tree | e8a66b1c5ca53d9f3cf4f68afa9314f2888fe69c | |
parent | be0eced68a0cdfac63b3f806be9909c536ef8883 (diff) |
The intag-state has to be preserved through sequential calls of Read
-rw-r--r-- | unxml.go | 12 |
1 files changed, 5 insertions, 7 deletions
@@ -21,6 +21,7 @@ type Reader struct { type ElementReader struct { xr Reader tagsinstack map[string]int + intagtokeep bool } //type stack []string @@ -127,7 +128,7 @@ func (r *Reader) Read(out []byte) (int, error) { func (r *ElementReader) Read(out []byte) (int, error) { //fmt.Fprintf(os.Stderr, "Read has been called.\n") var err error - intagtokeep := true + //r.intagtokeep = true r.xr.count = 0 n := 0 @@ -159,7 +160,7 @@ func (r *ElementReader) Read(out []byte) (int, error) { return r.xr.count, io.EOF case html.TextToken: - if !intagtokeep { + if !r.intagtokeep { continue } text := r.xr.tokenizer.Text() @@ -178,14 +179,11 @@ func (r *ElementReader) Read(out []byte) (int, error) { } case html.StartTagToken: - if !intagtokeep { - continue - } tn, _ := r.xr.tokenizer.TagName() //fmt.Printf("TagNameStart: %s\n", tn) if _, ok := r.xr.tagmap[string(tn)]; ok { r.tagsinstack[string(tn)]++ - intagtokeep = true + r.intagtokeep = true raw := r.xr.tokenizer.Raw() //fmt.Printf("TokenRaw: %s\n", raw) if len(raw) < lenout { @@ -207,7 +205,7 @@ func (r *ElementReader) Read(out []byte) (int, error) { //fmt.Printf("TagEndNameInStack: %s, %d\n", tn, count) if count == 1 { delete(r.tagsinstack, string(tn)) - intagtokeep = false + r.intagtokeep = false } else { r.tagsinstack[string(tn)]-- } |