package drawio import ( "bufio" "fmt" "io" xmlparser "github.com/tamerh/xml-stream-parser" ) // Разбирает данные и возвращает срез имён диаграмм в них func Diagrams(reader io.Reader) ([]string, error) { var ( result = []string{} br = bufio.NewReader(reader) parser = xmlparser.NewXMLParser( br, "mxfile", "diagram", ).ParseAttributesOnly("diagram") ) for xml := range parser.Stream() { if xml.Err != nil { return result, xml.Err } fmt.Println(xml.Name) if items, ok := xml.Childs["diagram"]; ok { for _, item := range items { result = append(result, item.Attrs["name"]) } } } return result, nil }