private void LoadTables(PdmDiagram diagram, XmlNode symbolRootNode) { if (symbolRootNode == null) { return; } var url = GetTableReferencePath(diagram); var tableRootNode = doc.SelectSingleNode(url, nms); foreach (XmlNode child in symbolRootNode.SelectNodes("o:TableSymbol", nms)) { if (child.SelectSingleNode("c:ClonePredecessor", nms) != null) { continue; } var refNode = child.SelectSingleNode("c:Object/o:Table", nms); if (refNode != null) { var id = refNode.Attributes["Ref"].InnerText; if (existsCodes.Contains(id)) { continue; } existsCodes.Add(id); var tNode = tableRootNode.SelectSingleNode("o:Table[@Id='" + id + "']", nms); if (tNode != null) { var nameNode = tNode.SelectSingleNode("a:Name", nms); var codeNode = tNode.SelectSingleNode("a:Code", nms); var descNode = tNode.SelectSingleNode("a:Comment", nms); var table = new PdmTable(); table.Id = id; table.Name = codeNode.InnerText; if (descNode != null && !string.IsNullOrEmpty(descNode.InnerText) && nameNode.InnerText != descNode.InnerText) { table.Description = descNode.InnerText; } else { table.Description = nameNode.InnerText; } table.Uri = string.Format("{0}/o:Table[@Id='{1}']", url, id); diagram.Tables.Add(table); } } } }
private string GetTableReferencePath(PdmDiagram diagram) { var sb = new StringBuilder(); var parent = diagram.Parent; while (parent != null) { sb.Insert(0, "/c:Packages/o:Package[@Id='" + parent.Id + "']"); parent = parent.Parent; } return(string.Format("//Model/o:RootObject/c:Children/o:Model{0}/c:Tables", sb)); }
private void LoadDiagrams(List <PdmDiagram> diagrams, XmlNode diagramRootNode, PdmPackage parent) { if (diagramRootNode == null) { return; } foreach (XmlNode child in diagramRootNode.SelectNodes("o:PhysicalDiagram", nms)) { var nameNode = child.SelectSingleNode("a:Name", nms); var id = child.Attributes["Id"].InnerText; var symbolRootNode = child.SelectSingleNode("c:Symbols", nms); var diagram = new PdmDiagram(); diagram.Id = child.Attributes["Id"].InnerText; diagram.Name = nameNode.InnerText; diagram.Parent = parent; LoadTables(diagram, symbolRootNode); diagrams.Add(diagram); } }