/// <summary> /// Constructor with tree params host interfaces /// </summary> /// <param name="url"></param> /// <param name="check"></param> /// <param name="split"></param> public TxtToElement(string url, ICheck check, ISplitString split) { this.url = url; if (CheckOnUrl(check)) { SplitOnElementsAndParams(check, split); } else { elements = null; parameters = null; } }
/// <summary> /// Split received string on elements and params /// </summary> /// <param name="check"></param> /// <param name="split"></param> public void SplitOnElementsAndParams(ICheck check, ISplitString split) { elements = new List <string>(); foreach (var str in split.SplitBySlesh(url)) { if (check.CheckUrlOnParam(str)) { parameters = new Dictionary <string, string>(); string[] keyValue = split.SplitOnParameters(str); for (int i = 0; i < keyValue.Length - 1; i += 2) { parameters.Add(keyValue[i], keyValue[i + 1]); } } else { elements.Add(str); } } }
/// <summary> /// Method Reads from text file and Writtes to Xml file /// </summary> /// <param name="check"></param> /// <param name="split"></param> public void Go(ICheck check, ISplitString split) { if (check == null) { check = new Check(); } if (split == null) { split = new SplitString(); } using (StreamReader sr = new StreamReader(textFile)) { string line; XDocument xDoc; XElement root; if (!File.Exists(xmlFile)) { File.Delete(xmlFile); } xDoc = new XDocument(); root = new XElement("urlAddresses"); while ((line = sr.ReadLine()) != null) { ITextToElement textToElement = new TxtToElement(line, check, split); elements = textToElement.GetElementsList(); parameters = textToElement.GetParametresDictionary(); if (elements == null) { continue; } XElement address = new XElement("urlAdress"); XElement host = new XElement("host", new XAttribute("name", elements[0])); elements.RemoveAt(0); XElement uri = new XElement("uri"); address.Add(host, uri); foreach (var elem in elements) { if (elem != string.Empty) { XElement segment = new XElement("segment", elem); uri.Add(segment); } } if (parameters != null) { XElement parametersElement = new XElement("parameters"); address.Add(parametersElement); foreach (var param in parameters) { XElement parametr = new XElement("parametr", new XAttribute("value", param.Value), new XAttribute("key", param.Key)); parametersElement.Add(parametr); } } root.Add(address); } xDoc.Add(root); xDoc.Save("urlAddresses.xml"); } }