private void exportMapContent(string xml, string outputDir) { var doc = new XmlDocument(); doc.LoadXml(xml); XmlNodeList nodelist = doc.ChildNodes; Map map = MapView.Active.Map; var cm = CIMMap.FromXml(xml); foreach (var layer in cm.Layers) { Layer lyr = map.FindLayer(layer, true); GetLayerNode(lyr, doc); } foreach (var st in cm.StandaloneTables) { StandaloneTable tbl = map.FindStandaloneTable(st); XmlNode lnd; lnd = doc.SelectSingleNode("//StandaloneTables/String[text()='" + tbl.URI + "']"); CIMService cs = new MapMemberService((MapMember)tbl); var xmlLayer = cs.GetDefinitionAsync(); XmlDocumentFragment xfrag = doc.CreateDocumentFragment(); xfrag.InnerXml = xmlLayer.Result; XmlNode nd = xfrag.FirstChild; lnd.AppendChild(nd); } string str = TransformDocument(doc.InnerXml, System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), @"Stylesheet\CIMMap.xslt"), System.IO.Path.Combine(outputDir, MakeValidFileName(map.Name))); }
private void GetLayerNode(Layer lyr, XmlDocument doc) { Layer plyr = MapView.Active.Map.FindLayer(lyr.URI, true); MapMember mm = lyr; XmlNode lnd; lnd = doc.SelectSingleNode("//Layers/String[text()='" + lyr.URI + "']"); CIMService cs = new MapMemberService((MapMember)lyr); //var xmlLayer = GetlayerDefinitionAsync(lyr); var xmlLayer = cs.GetDefinitionAsync(); XmlDocumentFragment xfrag = doc.CreateDocumentFragment(); xfrag.InnerXml = xmlLayer.Result; XmlNode nd = xfrag.FirstChild; switch (lyr.GetType().Name) { case "GroupLayer": lnd.AppendChild(xfrag); GroupLayer glyr = (GroupLayer)lyr; foreach (var layer in glyr.Layers) { lnd = doc.SelectSingleNode("//Layers/String[text()='" + lyr.URI + "']"); GetLayerNode(layer, doc); } break; case "FeatureLayer": var cfl = CIMFeatureLayer.FromXml(xmlLayer.Result); GetRenderer(cfl.Renderer, nd, ReportDir); lnd.AppendChild(nd); break; case "RasterLayer": var crl = CIMRasterLayer.FromXml(xmlLayer.Result); //GetRenderer(crl., nd, ReportDir); lnd.AppendChild(nd); break; case "StandaloneTable": lnd = doc.SelectSingleNode("//StandaloneTables/String[text()='" + lyr.URI + "']"); lnd.AppendChild(nd); break; default: lnd.AppendChild(nd); break; } }