Пример #1
0
        public static NetworkData CreateFromTextFile(string file)
        {
            Debug.Log("create from text");
            string[]    lines = System.IO.File.ReadAllLines(file);
            NetworkData net   = new NetworkData();

            Node travNode = new Node();

            foreach (string line in lines)
            {
                string[] words = line.Split(' ');
                if (net.getRoot() != null)
                {
                    travNode = net.getRoot();
                }


                for (int i = 0; i < words.Length; i++)
                {
                    if (net.getRoot() == null)
                    {
                        net.AddRootNode(new Node(words[i]));
                        travNode = net.getRoot();
                    }

                    else
                    {
                        if (!String.Equals(travNode.Text, words[i]))
                        {
                            Node ch = travNode.hasChildWithText(words[i]);
                            if (ch == null)
                            {
                                Node nn = new Node(words[i]);
                                nn.addParent(travNode);
                                nn.ID = (net.getNodeCount() + 1).ToString();
                                net.AddNode(nn);
                                travNode.addChild(nn);
                                Debug.Log("creating new node _" + nn.Text + "_ with parent " + travNode.Text);


                                Edge ne = new Edge(travNode, nn);
                                ne.ID = (net.getEdgeCount() + 1).ToString();
                                net.AddEdge(ne);
                                travNode = nn;
                            }
                            else
                            {
                                travNode = ch;
                            }
                        }
                    }
                }
                //   Debug.Log(net.getNodeCount());
            }

            return(net);
        }
Пример #2
0
        public static NetworkData ReadFromXml(string file, char sep = ' ')
        {
            NetworkData net = new NetworkData();

            Debug.Log("loading");
            XmlDocument doc = new XmlDocument();

            doc.Load(file);

            XmlNodeList nodes = doc.SelectNodes("/Table/Nodes/Node");

            Debug.Log("loading done" + nodes.Count);
            foreach (XmlNode node in nodes)
            {
                Node n = new Node(node.SelectSingleNode("Node_id").InnerText,
                                  node.SelectSingleNode("Node_text").InnerText,
                                  node.SelectSingleNode("Node_type").InnerText,
                                  new Vector3((float)Convert.ToDouble(node.SelectSingleNode("Node_posX").InnerText),
                                              (float)Convert.ToDouble(node.SelectSingleNode("Node_posY").InnerText),
                                              (float)Convert.ToDouble(node.SelectSingleNode("Node_posZ").InnerText))
                                  );

                Debug.Log("lala " + n.Text);
                //        Debug.Log(node.Attributes.GetNamedItem("Node_id").Value);
                net.AddNode(n);
            }

            XmlNodeList edges = doc.SelectNodes("/Table/Edges/Edge");

            foreach (XmlNode edge in edges)
            {
                Node n1 = net.getNodeById(edge.SelectSingleNode("Edge_node1").InnerText);
                Node n2 = net.getNodeById(edge.SelectSingleNode("Edge_node2").InnerText);
                Edge e  = new Edge(edge.SelectSingleNode("Edge_id").InnerText,
                                   edge.SelectSingleNode("Edge_type").InnerText,
                                   n1,
                                   n2
                                   );


                //        Debug.Log(node.Attributes.GetNamedItem("Node_id").Value);
                net.AddEdge(e);
            }



            Debug.Log("LOADING AND PARSING COMPLETE:  edges=" + net.getEdgeCount() + " / nodes=" + net.getNodeCount());
            return(net);
        }