public MarkupLibrary.MarkupElement SearchTree(MarkupLibrary.MarkupDocument document, string elemName, string attrName, string search) { foreach (MarkupLibrary.MarkupElement element in document.ChildElements) { string elementName = element.Name; var elementMeta = (from n in element.Attributes where n.Name == attrName select n).FirstOrDefault(); if (elementMeta != null) { if (elementMeta.Value.ToLower() == search.ToLower()) { return(element); } else { return(SearchTreeNodes(element, elemName, attrName, search)); } } else { MarkupLibrary.MarkupElement elemTemp = SearchTreeNodes(element, elemName, attrName, search); if (elemTemp != null) { return(elemTemp); } } } return(null); }
public MarkupLibrary.MarkupElement SearchTreeNodes(MarkupLibrary.MarkupElement parentElement, string elemName) { foreach (MarkupLibrary.MarkupElement element in parentElement.ChildElements) { string elementName = element.Name; if (elementName.ToLower() == elemName.ToLower()) { return(element); } var elementMeta = (from n in element.ChildElements where n.Name.ToLower() == elemName.ToLower() select n).FirstOrDefault(); if (elementMeta != null) { return(elementMeta); } else { MarkupLibrary.MarkupElement elemTemp = SearchTreeNodes(element, elemName); if (elemTemp != null) { return(elemTemp); } } } return(null); }
public string GetMarkupElementValuePure(MarkupLibrary.MarkupElement element) { if (element == null) { return(""); } return(element.ToTextString(false).Trim()); }
public string GetMarkupElementValue(MarkupLibrary.MarkupElement element) { if (element == null) { return(""); } MarkupLibrary.MarkupElement dostorImageContent = SearchTreeNodes(element, "div", "class", "field field-type-filefield field-field-mainimage"); element.ChildElements.Remove(dostorImageContent); return(element.ToTextString()); }
public string GetMarkupAttributeValueByContains(MarkupLibrary.MarkupElement element, string name) { if (element == null) { return(""); } var elementMeta = (from n in element.Attributes where n.Name == name select n).FirstOrDefault(); return(elementMeta == null ? "" : elementMeta.Value); }
public void GetSource() { Stream outStream; MarkupLibrary.MarkupElement element = analyzeApi.SearchTree(document, "h1", "itemprop", "name"); string category = analyzeApi.GetMarkupElementValuePure(element); category = category.Substring(0, category.IndexOf('-')).Trim(); MarkupLibrary.MarkupElement detailedSession = analyzeApi.SearchTree(document, "div", "id", "detail" + category.Replace(" ", "_").ToLower()); List <MarkupLibrary.Data.DataItem> dimensions = new List <MarkupLibrary.Data.DataItem>(); List <MarkupLibrary.Data.DataItem> metrics = new List <MarkupLibrary.Data.DataItem>(); List <MarkupLibrary.Data.DataItem> calculated = new List <MarkupLibrary.Data.DataItem>(); int i = 0; MarkupLibrary.Data.ItemType type = MarkupLibrary.Data.ItemType.Dimensions; while (i < detailedSession.ChildElements.Count) { #region Loading Data Items bool itemSet = false; MarkupLibrary.Data.DataItem CurrentSource = new MarkupLibrary.Data.DataItem(); CurrentSource.Category = category; if (detailedSession.ChildElements[i].Name == "h2") { string value = analyzeApi.GetMarkupAttributeValue(detailedSession.ChildElements[i], "id"); if (value == category.Replace(" ", "_").ToLower() + "metrics") { type = MarkupLibrary.Data.ItemType.Metric; } else if (value == category.Replace(" ", "_").ToLower() + "calculated_metrics") { type = MarkupLibrary.Data.ItemType.Calculated; } i++; } CurrentSource.ItemType = type; if (detailedSession.ChildElements[i].Name == "h3") { CurrentSource.APICommand = analyzeApi.GetMarkupElementValuePure(detailedSession.ChildElements[i].ChildElements[0]).Trim(); string deprecatedString = analyzeApi.GetMarkupAttributeValue(detailedSession.ChildElements[i], "class"); if (deprecatedString != "deprecated") { itemSet = true; } i++; } if (detailedSession.ChildElements[i].Name == "div") { string value = detailedSession.ChildElements[i].Attributes[0].Value; if (value == "ind") { int j = 0; while (j < detailedSession.ChildElements[i].ChildElements.Count) { MarkupLibrary.MarkupElement e = detailedSession.ChildElements[i].ChildElements[j]; if (e.Name == "div") { if (analyzeApi.GetMarkupElementValuePure(e).Trim().Contains("Web View Name")) { CurrentSource.WebViewName = analyzeApi.GetMarkupElementValuePure(e.ChildElements[0]).Trim(); j++; e = detailedSession.ChildElements[i].ChildElements[j]; } if (analyzeApi.GetMarkupElementValuePure(e).Trim().Contains("App View Name")) { CurrentSource.AppViewName = analyzeApi.GetMarkupElementValuePure(e.ChildElements[0]).Trim(); j++; e = detailedSession.ChildElements[i].ChildElements[j]; } } if (e.Name == "table") { CurrentSource.DataType = analyzeApi.GetMarkupElementValuePure(e.ChildElements[0].ChildElements[1].ChildElements[0].ChildElements[0]).Trim(); CurrentSource.AllowedInSegments = analyzeApi.GetMarkupElementValuePure(e.ChildElements[0].ChildElements[1].ChildElements[1]).Trim() == "Yes"; } if (e.Name == "p") { string desc = analyzeApi.GetMarkupElementValuePure(e); CurrentSource.Description += desc.Trim() == "Attributes\r\n:" ? "" : desc; } j++; } MarkupLibrary.MarkupElement calculationElement = analyzeApi.SearchTreeNodes(detailedSession.ChildElements[i], "pre", "class", "prettyprint"); if (calculationElement != null) { CurrentSource.Description += " (" + analyzeApi.GetMarkupElementValuePure(calculationElement) + " ) "; } } } if (type == MarkupLibrary.Data.ItemType.Dimensions && itemSet) { dimensions.Add(CurrentSource); } else if (type == MarkupLibrary.Data.ItemType.Metric && itemSet) { metrics.Add(CurrentSource); } else if (type == MarkupLibrary.Data.ItemType.Calculated && itemSet) { calculated.Add(CurrentSource); } i++; #endregion } XmlDocument xml = new XmlDocument(); XmlElement root; if (System.IO.File.Exists("DataItems.xml")) { xml.Load("DataItems.xml"); } if (!xml.HasChildNodes) { xml.AppendChild(xml.CreateXmlDeclaration("1.0", "", "")); root = xml.CreateElement("DataItems"); xml.AppendChild(root); } else { root = xml.DocumentElement; } XmlElement categoryElement = xml.CreateElement("DataCategory"); XmlAttribute categoryName = xml.CreateAttribute("Name"); categoryName.Value = category; categoryElement.Attributes.Append(categoryName); XmlElement itemTypeElement = xml.CreateElement("ItemType"); XmlAttribute itemTypeNameAttribute = xml.CreateAttribute("Name"); itemTypeNameAttribute.Value = "Dimensions"; itemTypeElement.Attributes.Append(itemTypeNameAttribute); XmlAttribute itemTypeValueAttribute = xml.CreateAttribute("Value"); itemTypeValueAttribute.Value = "1"; itemTypeElement.Attributes.Append(itemTypeValueAttribute); categoryElement.AppendChild(itemTypeElement); foreach (MarkupLibrary.Data.DataItem item in dimensions) { XmlElement dataItemElement = xml.CreateElement("DataItem"); dataItemElement.InnerText = item.Description; XmlAttribute attribute = xml.CreateAttribute("Name"); attribute.Value = item.APICommand.Replace("ga:", ""); dataItemElement.Attributes.Append(attribute); attribute = xml.CreateAttribute("APICommand"); attribute.Value = item.APICommand; dataItemElement.Attributes.Append(attribute); attribute = xml.CreateAttribute("WebViewName"); attribute.Value = item.WebViewName; dataItemElement.Attributes.Append(attribute); attribute = xml.CreateAttribute("AppViewName"); attribute.Value = item.AppViewName; dataItemElement.Attributes.Append(attribute); attribute = xml.CreateAttribute("DataType"); attribute.Value = item.DataType; dataItemElement.Attributes.Append(attribute); attribute = xml.CreateAttribute("AllowedInSegments"); attribute.Value = item.AllowedInSegments.ToString(); dataItemElement.Attributes.Append(attribute); itemTypeElement.AppendChild(dataItemElement); } itemTypeElement = xml.CreateElement("ItemType"); itemTypeNameAttribute = xml.CreateAttribute("Name"); itemTypeNameAttribute.Value = "Metrics"; itemTypeElement.Attributes.Append(itemTypeNameAttribute); itemTypeValueAttribute = xml.CreateAttribute("Value"); itemTypeValueAttribute.Value = "2"; itemTypeElement.Attributes.Append(itemTypeValueAttribute); categoryElement.AppendChild(itemTypeElement); foreach (MarkupLibrary.Data.DataItem item in metrics) { XmlElement dataItemElement = xml.CreateElement("DataItem"); dataItemElement.InnerText = item.Description; XmlAttribute attribute = xml.CreateAttribute("Name"); attribute.Value = item.APICommand.Replace("ga:", ""); dataItemElement.Attributes.Append(attribute); attribute = xml.CreateAttribute("APICommand"); attribute.Value = item.APICommand; dataItemElement.Attributes.Append(attribute); attribute = xml.CreateAttribute("WebViewName"); attribute.Value = item.WebViewName; dataItemElement.Attributes.Append(attribute); attribute = xml.CreateAttribute("AppViewName"); attribute.Value = item.AppViewName; dataItemElement.Attributes.Append(attribute); attribute = xml.CreateAttribute("DataType"); attribute.Value = item.DataType; dataItemElement.Attributes.Append(attribute); attribute = xml.CreateAttribute("AllowedInSegments"); attribute.Value = item.AllowedInSegments.ToString(); dataItemElement.Attributes.Append(attribute); itemTypeElement.AppendChild(dataItemElement); } itemTypeElement = xml.CreateElement("ItemType"); itemTypeNameAttribute = xml.CreateAttribute("Name"); itemTypeNameAttribute.Value = "Calculated"; itemTypeElement.Attributes.Append(itemTypeNameAttribute); itemTypeValueAttribute = xml.CreateAttribute("Value"); itemTypeValueAttribute.Value = "3"; itemTypeElement.Attributes.Append(itemTypeValueAttribute); categoryElement.AppendChild(itemTypeElement); foreach (MarkupLibrary.Data.DataItem item in calculated) { XmlElement dataItemElement = xml.CreateElement("DataItem"); dataItemElement.InnerText = item.Description; XmlAttribute attribute = xml.CreateAttribute("Name"); attribute.Value = item.APICommand.Replace("ga:", ""); dataItemElement.Attributes.Append(attribute); attribute = xml.CreateAttribute("APICommand"); attribute.Value = item.APICommand; dataItemElement.Attributes.Append(attribute); attribute = xml.CreateAttribute("WebViewName"); attribute.Value = item.WebViewName; dataItemElement.Attributes.Append(attribute); attribute = xml.CreateAttribute("AppViewName"); attribute.Value = item.AppViewName; dataItemElement.Attributes.Append(attribute); attribute = xml.CreateAttribute("DataType"); attribute.Value = item.DataType; dataItemElement.Attributes.Append(attribute); attribute = xml.CreateAttribute("AllowedInSegments"); attribute.Value = item.AllowedInSegments.ToString(); dataItemElement.Attributes.Append(attribute); itemTypeElement.AppendChild(dataItemElement); } root.AppendChild(categoryElement); xml.Save("DataItems.xml"); }