public override void WriteNodes(SearchSiteMapHandler handler, XmlTextWriter writer) { IEnumerable results = DataQuery(); if (results != null) { string appUrl = SearchSiteMapProviderBase.GenerateUrl(HttpContext.Current.Request.ApplicationPath + "/"); //Format is : http://server/site/page.aspx/value1/value2 etc if (_pathInfoFormat == true) { _targetUrlseparator = "/"; _queryStringDataFieldSeparator = "/"; } foreach (object o in results) { String targetUrlSuffix = ""; //Do this once once //Generate query string data fields if ((_queryStringDataFields == null) || (_queryStringDataFields.Count == 0)) { FieldInfo[] fis = o.GetType().GetFields(); foreach (FieldInfo fi in fis) { //Skip sitemap specific fields if (String.Compare(fi.Name, _lastModifiedDataField, StringComparison.Ordinal) == 0) continue; if (String.Compare(fi.Name, _changeFrequencyDataField, StringComparison.Ordinal) == 0) continue; if (String.Compare(fi.Name, _priorityDataField, StringComparison.Ordinal) == 0) continue; _queryStringDataFields.Add(fi.Name); } } if ((_queryStringDataFields != null) && (_queryStringDataFields.Count > 0)) { // Is format string present? if (!String.IsNullOrEmpty(_queryStringDataFormatString)) { List<object> _queryStringValues = new List<object>(); foreach (String queryStringName in _queryStringDataFields) { _queryStringValues.Add(DataEval(o, queryStringName).ToString()); } targetUrlSuffix = String.Format(CultureInfo.InvariantCulture, _queryStringDataFormatString, _queryStringValues.ToArray()); } else foreach (String queryStringName in _queryStringDataFields) { String queryStringValue = DataEval(o, queryStringName).ToString(); String queryStringNameValue = ""; if (!_pathInfoFormat) { queryStringNameValue = queryStringName + "=" + queryStringValue; } else { queryStringNameValue = queryStringValue; } if (targetUrlSuffix.Length > 0) targetUrlSuffix += _queryStringDataFieldSeparator; targetUrlSuffix += queryStringNameValue; } } String url = _targetUrl + _targetUrlseparator + targetUrlSuffix; writer.WriteStartElement("url"); writer.WriteElementString("loc", appUrl + url); if (!String.IsNullOrEmpty(_lastModifiedDataField)) { string lastmodifiedValue = DataEval(o, _lastModifiedDataField).ToString(); if (!String.IsNullOrEmpty(lastmodifiedValue)) { writer.WriteElementString("lastmod", lastmodifiedValue); } } if (!String.IsNullOrEmpty(_changeFrequencyDataField)) { string changeFrequencyValue = DataEval(o, _changeFrequencyDataField).ToString(); if (!String.IsNullOrEmpty(changeFrequencyValue)) { writer.WriteElementString("changefreq", changeFrequencyValue); } } if (!String.IsNullOrEmpty(_priorityDataField)) { string priorityValue = DataEval(o, _priorityDataField).ToString(); if (!String.IsNullOrEmpty(priorityValue)) { writer.WriteElementString("priority", priorityValue); } } writer.WriteEndElement(); // url } } }
public override void WriteNodes(SearchSiteMapHandler handler, XmlTextWriter writer) { IEnumerable results = DataQuery(); if (results != null) { string appUrl = SearchSiteMapProviderBase.GenerateUrl(HttpContext.Current.Request.ApplicationPath + "/"); //Format is : http://server/site/page.aspx/value1/value2 etc if (_pathInfoFormat == true) { _targetUrlseparator = "/"; _queryStringDataFieldSeparator = "/"; } foreach (object o in results) { String targetUrlSuffix = ""; //Do this once once //Generate query string data fields if ((_queryStringDataFields == null) || (_queryStringDataFields.Count == 0)) { FieldInfo[] fis = o.GetType().GetFields(); foreach (FieldInfo fi in fis) { //Skip sitemap specific fields if (String.Compare(fi.Name, _lastModifiedDataField, StringComparison.Ordinal) == 0) { continue; } if (String.Compare(fi.Name, _changeFrequencyDataField, StringComparison.Ordinal) == 0) { continue; } if (String.Compare(fi.Name, _priorityDataField, StringComparison.Ordinal) == 0) { continue; } _queryStringDataFields.Add(fi.Name); } } if ((_queryStringDataFields != null) && (_queryStringDataFields.Count > 0)) { // Is format string present? if (!String.IsNullOrEmpty(_queryStringDataFormatString)) { List <object> _queryStringValues = new List <object>(); foreach (String queryStringName in _queryStringDataFields) { _queryStringValues.Add(DataEval(o, queryStringName).ToString()); } targetUrlSuffix = String.Format(CultureInfo.InvariantCulture, _queryStringDataFormatString, _queryStringValues.ToArray()); } else { foreach (String queryStringName in _queryStringDataFields) { String queryStringValue = DataEval(o, queryStringName).ToString(); String queryStringNameValue = ""; if (!_pathInfoFormat) { queryStringNameValue = queryStringName + "=" + queryStringValue; } else { queryStringNameValue = queryStringValue; } if (targetUrlSuffix.Length > 0) { targetUrlSuffix += _queryStringDataFieldSeparator; } targetUrlSuffix += queryStringNameValue; } } } String url = _targetUrl + _targetUrlseparator + targetUrlSuffix; writer.WriteStartElement("url"); writer.WriteElementString("loc", appUrl + url); if (!String.IsNullOrEmpty(_lastModifiedDataField)) { string lastmodifiedValue = DataEval(o, _lastModifiedDataField).ToString(); if (!String.IsNullOrEmpty(lastmodifiedValue)) { writer.WriteElementString("lastmod", lastmodifiedValue); } } if (!String.IsNullOrEmpty(_changeFrequencyDataField)) { string changeFrequencyValue = DataEval(o, _changeFrequencyDataField).ToString(); if (!String.IsNullOrEmpty(changeFrequencyValue)) { writer.WriteElementString("changefreq", changeFrequencyValue); } } if (!String.IsNullOrEmpty(_priorityDataField)) { string priorityValue = DataEval(o, _priorityDataField).ToString(); if (!String.IsNullOrEmpty(priorityValue)) { writer.WriteElementString("priority", priorityValue); } } writer.WriteEndElement(); // url } } }
public override void WriteNodes(SearchSiteMapHandler handler, XmlTextWriter writer) { SiteMapNode root = System.Web.SiteMap.RootNode; WriteNode(root, writer, 0); }
public virtual void WriteNodes(SearchSiteMapHandler handler, XmlTextWriter writer) { }