package ansim; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.List; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamConstants; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; import ansim.Edge; /** * class for reading net file * * @author Thimor Bohn <bohn@itm.uni-luebeck.de> * */ public class NetReader { /** * method for reading net file * * @param net name of netfile * @param edges holds net after execution */ public static void read(String net, List<Edge> edges) { try { InputStream in = new FileInputStream(net); XMLInputFactory factory = XMLInputFactory.newInstance(); XMLStreamReader parser = factory.createXMLStreamReader(in); for (int event = parser.next(); event != XMLStreamConstants.END_DOCUMENT; event = parser.next()) { if (event == XMLStreamConstants.START_ELEMENT) { if (parser.getLocalName().equals("edge")) { String id = ""; float length = 0; float speed = 0; String name = ""; float xfrom = 0; float yfrom = 0; float xto = 0; float yto = 0; for (int attr = 0; attr < parser.getAttributeCount(); attr++) { String attrName = parser.getAttributeLocalName(attr); String value = parser.getAttributeValue(attr); if ("id".equals(attrName)) id = value; if ("Length".equals(attrName)) length = Float.parseFloat(value); if ("Speed".equals(attrName)) speed = Float.parseFloat(value); if ("Name".equals(attrName)) name = value; if ("XFrom".equals(attrName)) xfrom = Float.parseFloat(value); if ("YFrom".equals(attrName)) yfrom = Float.parseFloat(value); if ("XTo".equals(attrName)) xto = Float.parseFloat(value); if ("YTo".equals(attrName)) yto = Float.parseFloat(value); } Edge edge = new Edge(id, length, speed, name, xfrom,yfrom, xto, yto); edges.add(edge); } } } parser.close(); } catch (XMLStreamException ex) { System.out.println(ex); } catch (IOException ex) { System.out.println("IOException while parsing " + net); } } }