public DrwConnection ExtractDrwConnectionFromNav(XPathNavigator nav) { if (!nav.HasChildren) { return(null); } int id = -1; int fromId = -1; int toId = -1; nav.MoveToFirstChild(); do { if (nav.Name.ToLower() == "id") { try { id = int.Parse(nav.Value.Trim()); } catch (Exception e) { throw new Exception("Id not an integer in DrwFile", e); } } else if (nav.Name.ToLower() == "fromid") { try { fromId = int.Parse(nav.Value.Trim()); } catch (Exception e) { throw new Exception("FromId not an integer in DrwFile", e); } } else if (nav.Name.ToLower() == "toid") { try { toId = int.Parse(nav.Value.Trim()); } catch (Exception e) { throw new Exception("ToId not an integer in DrwFile", e); } } } while (nav.MoveToNext()); DrwConnection connection = new DrwConnection(id, fromId, toId); return(connection); }
public FBPGraph GenerateFBPGraphFromDrwFile(Stream drwFileStream, ReplacementConfiguration configuration) { XPathDocument xmlPathDoc = new XPathDocument(drwFileStream); XPathNavigator navigator = xmlPathDoc.CreateNavigator(); XPathNodeIterator blockIterator = navigator.SelectDescendants("block", "", false); XPathNodeIterator connectionIterator = navigator.SelectDescendants("connection", "", false); int count = connectionIterator.Count; List <DrwBlock> blocks = new List <DrwBlock>(); List <DrwConnection> connections = new List <DrwConnection>(); while (blockIterator.MoveNext()) { XPathNavigator nav = blockIterator.Current.Clone(); DrwBlock block = utility.ExtractDrwBlockFromNav(nav, configuration); if (block != null) { blocks.Add(block); } } while (connectionIterator.MoveNext()) { XPathNavigator nav = connectionIterator.Current.Clone(); DrwConnection connection = utility.ExtractDrwConnectionFromNav(nav); if (connection != null) { connections.Add(connection); } } FBPGraph graph = new FBPGraph(blocks, connections); return(graph); }