func processBody(reader *xmltextreader.XmlTextReaderPtr, tag string, currentPointer string, c chan *Word) { currentElementNum := 0 res := reader.Read() eventType := reader.NodeType() if currentPointer == "/1" { currentElementNum = 1 } for !(xmltextreader.XML_END_ELEMENT == eventType && tag == reader.Name()) && -1 != res { name := reader.Name() if xmltextreader.XML_START_ELEMENT == eventType { currentElementNum += 1 if paragraph_tag == name || text_author_tag == name || subtitle_tag == name || verse_tag == name { getParaToTagEnd(reader, name, currentPointer+"/"+strconv.Itoa(currentElementNum), 1, c) } else if body_tag == name { hasAttr, err := reader.HasAttributes() if nil == err && hasAttr == false { processBody(reader, name, currentPointer+"/"+strconv.Itoa(currentElementNum), c) } } else if section_tag == name { hasAttr, err := reader.HasAttributes() if nil == err && hasAttr { // Skip section with id attr, notes definitions getParaToTagEnd(reader, name, "", 1, c) } else { processBody(reader, name, currentPointer+"/"+strconv.Itoa(currentElementNum), c) } } else if title_tag == name || epigraph_tag == name { processBody(reader, name, currentPointer+"/"+strconv.Itoa(currentElementNum), c) } } res = reader.Read() eventType = reader.NodeType() } }