diff options
-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)]-- } |