/// <summary> /// Constructs the XML source from the cmsContentXml table used for Media and Members. /// </summary> /// <param name="umbracoObjectType">an UmbracoObjectType value</param> /// <returns>XML built from the cmsContentXml table</returns> public static XmlDocument GetPublishedXml(UmbracoObjectType umbracoObjectType) { try { var hierarchy = new Dictionary <int, List <int> >(); var nodeIndex = new Dictionary <int, XmlNode>(); var xmlDoc = new XmlDocument(); var sql = "SELECT umbracoNode.id, umbracoNode.parentId, umbracoNode.sortOrder, cmsContentXml.xml FROM umbracoNode INNER JOIN cmsContentXml ON cmsContentXml.nodeId = umbracoNode.id AND umbracoNode.nodeObjectType = @nodeObjectType ORDER BY umbracoNode.level, umbracoNode.sortOrder"; using (var dr = uQuery.SqlHelper.ExecuteReader(sql, uQuery.SqlHelper.CreateParameter("@nodeObjectType", umbracoObjectType.GetGuid()))) { while (dr.Read()) { var currentId = dr.GetInt("id"); var parentId = dr.GetInt("parentId"); var xml = dr.GetString("xml"); // and parse it into a DOM node xmlDoc.LoadXml(xml); nodeIndex.Add(currentId, xmlDoc.FirstChild); // Build the content hierarchy List <int> children; if (!hierarchy.TryGetValue(parentId, out children)) { // No children for this parent, so add one children = new List <int>(); hierarchy.Add(parentId, children); } children.Add(currentId); } // Set top level wrapper element switch (umbracoObjectType) { case UmbracoObjectType.Media: xmlDoc.LoadXml("<Media id=\"-1\"/>"); break; case UmbracoObjectType.Member: xmlDoc.LoadXml("<Members id=\"-1\"/>"); break; default: xmlDoc.LoadXml("<Nodes id=\"-1\"/>"); break; } // Start building the content tree recursively from the root (-1) node GenerateXmlDocument(hierarchy, nodeIndex, -1, xmlDoc.DocumentElement); return(xmlDoc); } } catch (Exception ex) { LogHelper.Error <UmbracoHelper>("uQuery error", ex); } return(null); }
/// <summary> /// Constructs the XML source from the cmsContentXml table used for Media and Members. /// </summary> /// <param name="umbracoObjectType">an UmbracoObjectType value</param> /// <returns>XML built from the cmsContentXml table</returns> public static XmlDocument GetPublishedXml(UmbracoObjectType umbracoObjectType) { try { var hierarchy = new Dictionary<int, List<int>>(); var nodeIndex = new Dictionary<int, XmlNode>(); var xmlDoc = new XmlDocument(); var sql = "SELECT umbracoNode.id, umbracoNode.parentId, umbracoNode.sortOrder, cmsContentXml.xml FROM umbracoNode INNER JOIN cmsContentXml ON cmsContentXml.nodeId = umbracoNode.id AND umbracoNode.nodeObjectType = @nodeObjectType ORDER BY umbracoNode.level, umbracoNode.sortOrder"; using (var dr = uQuery.SqlHelper.ExecuteReader(sql, uQuery.SqlHelper.CreateParameter("@nodeObjectType", umbracoObjectType.GetGuid()))) { while (dr.Read()) { var currentId = dr.GetInt("id"); var parentId = dr.GetInt("parentId"); var xml = dr.GetString("xml"); // and parse it into a DOM node xmlDoc.LoadXml(xml); nodeIndex.Add(currentId, xmlDoc.FirstChild); // Build the content hierarchy List<int> children; if (!hierarchy.TryGetValue(parentId, out children)) { // No children for this parent, so add one children = new List<int>(); hierarchy.Add(parentId, children); } children.Add(currentId); } // Set top level wrapper element switch (umbracoObjectType) { case UmbracoObjectType.Media: xmlDoc.LoadXml("<Media id=\"-1\"/>"); break; case UmbracoObjectType.Member: xmlDoc.LoadXml("<Members id=\"-1\"/>"); break; default: xmlDoc.LoadXml("<Nodes id=\"-1\"/>"); break; } // Start building the content tree recursively from the root (-1) node GenerateXmlDocument(hierarchy, nodeIndex, -1, xmlDoc.DocumentElement); return xmlDoc; } } catch (Exception ex) { LogHelper.Error<UmbracoHelper>("uQuery error", ex); } return null; }