1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | private var xml:XML public function loadData():void { var xmlLoader:URLLoader = new URLLoader() xmlLoader.dataFormat = URLLoaderDataFormat.TEXT xmlLoader.addEventListener(Event.COMPLETE, xmlCompleteHandler) xmlLoader.addEventListener(IOErrorEvent.IO_ERROR, xmlIOErrorHandler) var request:URLRequest = new URLRequest("data/graphml.xml") xmlLoader.load(request) } private function xmlCompleteHandler(e:Event):void { (e.target as URLLoader).removeEventListener(Event.COMPLETE, xmlCompleteHandler) (e. target as URLLoader).removeEventListener(IOErrorEvent.IO_ERROR, xmlIOErrorHandler) xml = new XML(e. target.data) } private function xmlIOErrorHandler(e:IOErrorEvent):void { (e. target as URLLoader).removeEventListener(Event.COMPLETE, xmlCompleteHandler) (e. target as URLLoader).removeEventListener(IOErrorEvent.IO_ERROR, xmlIOErrorHandler) //TODO: graphML loaded fail } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | var graph = new Graph(new Map(), new Map()) var tmpNode:Node = null var tmpEdge:Edge = null var nodeId:String, sourceId:String, targetId:String var weight:Number var edgeKey:int for each (var node:XML in xml..node) { tmpNode = new Node() nodeId = node.@id tmpNode.id = ++graph.nodeCount graph.nodeMap.put(nodeId, tmpNode) } for each (var edge:XML in xml..edge) { tmpEdge = new Edge() sourceId = edge.@source targetId = edge.@target weight = parseFloat(edge.data.(@key == "weight").text().toXMLString() tmpEdge.src = graph.nodeMap.get(sourceId) tmpEdge.dest = graph.nodeMap.get(targetId) tmpEdge.weight = weight if (tmpEdge.src && tmpEdge.dest) { edgeKey = tmpEdge.src.id * 1000 + tmpEdge.dest.id graph.edgeMap.put(edgeKey, tmpEdge) } graph.edgeCount++ } |
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |