(parent xml.StartElement)
| 243 | } |
| 244 | |
| 245 | func (d *Decoder) decNextChild(parent xml.StartElement) (xml.StartElement, []byte, error) { |
| 246 | |
| 247 | for { |
| 248 | var tok interface{} |
| 249 | var err error |
| 250 | // Reads next token |
| 251 | if d.lastToken == nil { |
| 252 | tok, err = d.xmldec.Token() |
| 253 | if err != nil { |
| 254 | return xml.StartElement{}, nil, err |
| 255 | } |
| 256 | } else { |
| 257 | tok = d.lastToken |
| 258 | d.lastToken = nil |
| 259 | } |
| 260 | // Checks if it is the end element of this parent |
| 261 | el, ok := tok.(xml.EndElement) |
| 262 | if ok { |
| 263 | if el.Name.Local == parent.Name.Local { |
| 264 | return xml.StartElement{}, nil, nil |
| 265 | } |
| 266 | continue |
| 267 | } |
| 268 | // Checks if it is a start element |
| 269 | start, ok := tok.(xml.StartElement) |
| 270 | if !ok { |
| 271 | continue |
| 272 | } |
| 273 | // Get this start element optional char data (should be next token) |
| 274 | tok, err = d.xmldec.Token() |
| 275 | if err != nil { |
| 276 | return xml.StartElement{}, nil, err |
| 277 | } |
| 278 | // If token read is CharData, return the start element and its CharData |
| 279 | cdata, ok := tok.(xml.CharData) |
| 280 | if ok { |
| 281 | return start, cdata, nil |
| 282 | } |
| 283 | // Token read was not CharData and was not processed |
| 284 | // Save it into "lastToken" to be processed at the next call |
| 285 | d.lastToken = tok |
| 286 | return start, nil, nil |
| 287 | } |
| 288 | } |
| 289 | |
| 290 | func findAttrib(s xml.StartElement, name string) xml.Attr { |
| 291 |
no outgoing calls
no test coverage detected