Buongiorno a tutti,
ho creato un classe java per leggere 'nodi' e 'archi' da un file gml. Ho trovato uno script per trasformare il file in string e poi tramite arraylist trovare i nodi. Quando lo metto in esecuzione però mi da come errore:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at editor.ReadFile.getNodes(ReadFile.java:46)
at editor.ReadFile.main(ReadFile.java:77)

Non riesco a capire dove sia l'errore,qualcuno può aiutami?
Posto qua sotto il codice:


package editor;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;



public class ReadFile {


private String filename;

public ReadFile(String filename){
this.filename = filename;
}


/**
*
* @return File content as String
* @throws IOException
*/
public String read() throws IOException{
byte[] encodedFile = Files.readAllBytes(Paths.get(filename));
return new String(encodedFile, Charset.forName("ASCII"));

}

public ArrayList<String> getNodes(String content){
ArrayList<String> nodeList = new ArrayList<String>();
String nodePattern = "(id)\\s*[0-9]*";
Pattern regex = Pattern.compile(nodePattern);
Matcher match = regex.matcher(content);
while(match.find()){
String line = match.group(0);
nodeList.add(line.split(" ")[1].trim());
}

return nodeList;
}


public ArrayList<String> getEdges(String content){
ArrayList<String> edgeList = new ArrayList<String>();
String nodePattern = "(source)[\\s]*[\\d]*[\\s]*(target)[\\s]*[\\d]*";
Pattern regex = Pattern.compile(nodePattern);
Matcher match = regex.matcher(content);
while(match.find()){
String line = match.group(0);
line = line.replaceAll("( )+"," ");
String[] arr = line.split(" ");
edgeList.add(arr[1].trim()+","+arr[3].trim());
}

return edgeList;
}

public static void main(String[] args) throws IOException{
ReadFile readFile = new ReadFile(
"prova.gml");
String content = readFile.read();
ArrayList<String> nodes = readFile.getNodes(content);
ArrayList<String> edges = readFile.getEdges(content);
for(String node:nodes){
System.out.println("Node:"+node);
}
for(String edge:edges){
System.out.println("Edge:"+edge);
}
}
}

Grazie in anticipo a chiunque possa aiutarmi!