/// <summary> /// Method ToParseXML /// parses XML-file into list /// </summary> /// <returns>list with data from XML-file</returns> public List <string> ToParseXML() { //convert XML-file into array of strings ConvertIntoStrings converter = new ConvertIntoStrings(adressOfFile); string[] fileInStrings = converter.fileInString; //list in which we will keep data from XML-file List <string> dataOfXMLFile = new List <string>(); //index of symbol in string int indOfStr = 1; //in this string we will keep data from XML-string StringBuilder elementOfXML = new StringBuilder(); //object for work with strings (add symbols, delete...) WorkWithString builder = new WorkWithString(); //start of JSON-file dataOfXMLFile.Add("{"); //start to parse XML-file for (int i = 1; i < fileInStrings.Length; i++) { string str = fileInStrings[i]; //delete spaces from current string string currentString = builder.RemoveSpacesAtBeginning(str); // if string contains "<?xml"(XML-document declaration) // or "<!" (comments) // then skip this string if (currentString.StartsWith("<?xml") || currentString.StartsWith("<!")) { continue; } // if string contains "</" // then it is a closing tag // and prints "}" into JSON-file if (currentString.StartsWith("</")) { elementOfXML.Append("}"); dataOfXMLFile.Add(elementOfXML.ToString()); elementOfXML.Clear(); continue; } // if string contains "<" and "</" // then prints into JSON-file next // "elementOfXML": "value", if (currentString.StartsWith("<") && currentString.Contains("</")) { elementOfXML.Append(" "); elementOfXML.Append('"'); while (currentString[indOfStr] != '>') { elementOfXML.Append(currentString[indOfStr]); indOfStr++; } elementOfXML.Append('"'); elementOfXML.Append(": "); elementOfXML.Append('"'); indOfStr++; while (currentString[indOfStr] != '<') { elementOfXML.Append(currentString[indOfStr]); indOfStr++; } elementOfXML.Append('"'); elementOfXML.Append(','); dataOfXMLFile.Add(elementOfXML.ToString()); elementOfXML.Clear(); indOfStr = 1; continue; } // if string contains only "<elementOfXML>" // then bypass the whole block to the end if (currentString.StartsWith("<")) { elementOfXML.Append(" "); elementOfXML.Append('"'); while (currentString[indOfStr] != '>') { elementOfXML.Append(currentString[indOfStr]); indOfStr++; } elementOfXML.Append('"'); elementOfXML.Append(": {"); dataOfXMLFile.Add(elementOfXML.ToString()); indOfStr = 1; elementOfXML.Clear(); i++; str = fileInStrings[i]; currentString = builder.RemoveSpacesAtBeginning(str); // while did not reach the end of block while (!currentString.StartsWith("</")) { // if string contains "<" and "</" // then prints into JSON-file next // "elementOfXML": "value", if (currentString.StartsWith("<") && currentString.Contains("</")) { elementOfXML.Append(" "); elementOfXML.Append('"'); while (currentString[indOfStr] != '>') { elementOfXML.Append(currentString[indOfStr]); indOfStr++; } elementOfXML.Append('"'); elementOfXML.Append(": "); indOfStr++; elementOfXML.Append('"'); while (currentString[indOfStr] != '<') { elementOfXML.Append(currentString[indOfStr]); indOfStr++; } elementOfXML.Append('"'); elementOfXML.Append(','); dataOfXMLFile.Add(elementOfXML.ToString()); elementOfXML.Clear(); indOfStr = 1; } i++; str = fileInStrings[i]; //delete spaces from current string currentString = builder.RemoveSpacesAtBeginning(str); } // if have reached to the end of block // then print into JSON-file "}," if (currentString.StartsWith("</")) { elementOfXML.Append(" "); elementOfXML.Append("},"); dataOfXMLFile.Add(elementOfXML.ToString()); elementOfXML.Clear(); indOfStr = 1; } continue; } } return(dataOfXMLFile); }
/// <summary> /// Method ToParseJSON /// parses JSON-file into list /// </summary> /// <returns>list with data from JSON-file</returns> public List <string> ToParseJSON() { //convert JSON-file into array of strings ConvertIntoStrings converter = new ConvertIntoStrings(adressOfFile); string[] JSONInStrings = converter.fileInString; //list in which we will keep data from JSON-file List <string> dataOfJSONFile = new List <string>(); //index of symbol in string int indOfStr = 1; //in this string we will keep the way into data StringBuilder dataOfJSON = new StringBuilder(); //object for work with strings (add symbols, delete...) WorkWithString builder = new WorkWithString(); //element of JSON-file StringBuilder element = new StringBuilder(); //element inside the block in JSON-file StringBuilder nestedElement = new StringBuilder(); //value of nested element StringBuilder value = new StringBuilder(); //start of XML-file dataOfJSONFile.Add("<object>"); //start to parse JSON-file for (int i = 1; i < JSONInStrings.Length; i++) { string str = JSONInStrings[i]; //delete spaces from current string string currentString = builder.RemoveSpacesAtBeginning(str); // if current string contains string field // then print into XML-file next // <element>value of element</element> if (!currentString.Contains("{") && !currentString.Contains("}") && !currentString.Contains("[")) { dataOfJSON.Append(" "); dataOfJSON.Append('<'); while (currentString[indOfStr] != '"') { element.Append(currentString[indOfStr]); indOfStr++; } dataOfJSON.Append(element); dataOfJSON.Append('>'); //": " - we need to pass 4 symbols to get value of element indOfStr = indOfStr + 4; while (currentString[indOfStr] != '"') { dataOfJSON.Append(currentString[indOfStr]); indOfStr++; } //prints closing tag dataOfJSON.Append("</"); dataOfJSON.Append(element); dataOfJSON.Append(">"); dataOfJSONFile.Add(dataOfJSON.ToString()); dataOfJSON.Clear(); element.Clear(); indOfStr = 1; continue; } // if string contains object // then bypass the whole block to the end if (currentString.Contains("{")) { dataOfJSON.Append(" "); dataOfJSON.Append("<"); while (currentString[indOfStr] != '"') { element.Append(currentString[indOfStr]); indOfStr++; } dataOfJSON.Append(element); dataOfJSON.Append(">"); dataOfJSONFile.Add(dataOfJSON.ToString()); dataOfJSON.Clear(); indOfStr = 1; i++; str = JSONInStrings[i]; //delete spaces from current string currentString = builder.RemoveSpacesAtBeginning(str); //prints nested elements of object while (!currentString.StartsWith("},")) { if (!currentString.Contains("{")) { dataOfJSON.Append(" "); dataOfJSON.Append('<'); while (currentString[indOfStr] != '"') { nestedElement.Append(currentString[indOfStr]); indOfStr++; } dataOfJSON.Append(nestedElement); dataOfJSON.Append('>'); indOfStr = indOfStr + 4; while (currentString[indOfStr] != '"') { dataOfJSON.Append(currentString[indOfStr]); indOfStr++; } dataOfJSON.Append("</"); dataOfJSON.Append(nestedElement); dataOfJSON.Append(">"); dataOfJSONFile.Add(dataOfJSON.ToString()); dataOfJSON.Clear(); nestedElement.Clear(); indOfStr = 1; } i++; str = JSONInStrings[i]; //delete spaces from current string currentString = builder.RemoveSpacesAtBeginning(str); } // if we have reached the end of block in JSON-file // then prints closing tag if (currentString.StartsWith("},")) { dataOfJSON.Append(" "); dataOfJSON.Append("</"); dataOfJSON.Append(element); dataOfJSON.Append(">"); dataOfJSONFile.Add(dataOfJSON.ToString()); dataOfJSON.Clear(); element.Clear(); indOfStr = 1; } continue; } // if string contains array // then bypass the whole block to the end if (currentString.Contains("[")) { //array element name dataOfJSON.Append(" "); dataOfJSON.Append("<"); while (currentString[indOfStr] != '"') { element.Append(currentString[indOfStr]); indOfStr++; } dataOfJSON.Append(element); dataOfJSON.Append(">"); dataOfJSONFile.Add(dataOfJSON.ToString()); dataOfJSON.Clear(); i++; str = JSONInStrings[i]; //delete spaces from current string currentString = builder.RemoveSpacesAtBeginning(str); indOfStr = 1; nestedElement = element.Remove(element.Length - 1, 1); // until we reach the end of the block // prints elements of array into XML-file while (currentString[indOfStr] != ']') { indOfStr = 1; if (!currentString.Contains("{")) { dataOfJSON.Append(" "); dataOfJSON.Append("<"); dataOfJSON.Append(nestedElement); dataOfJSON.Append(">"); while (currentString[indOfStr] != '"') { value.Append(currentString[indOfStr]); indOfStr++; } dataOfJSON.Append(value); dataOfJSON.Append("</"); dataOfJSON.Append(nestedElement); dataOfJSON.Append(">"); dataOfJSONFile.Add(dataOfJSON.ToString()); dataOfJSON.Clear(); value.Clear(); } i++; str = JSONInStrings[i]; //delete spaces from current string currentString = builder.RemoveSpacesAtBeginning(str); indOfStr = 0; } // if we have reached the end of array in JSON-file // then prints closing tag if (currentString.StartsWith("]")) { dataOfJSON.Append(" "); dataOfJSON.Append("</"); dataOfJSON.Append(element); dataOfJSON.Append("s"); dataOfJSON.Append(">"); dataOfJSONFile.Add(dataOfJSON.ToString()); dataOfJSON.Clear(); element.Clear(); nestedElement.Clear(); } indOfStr = 1; continue; } // if string contains the end symbol of JSON-file // then print closing tag if (currentString.StartsWith("}")) { dataOfJSON.Append("</object>"); dataOfJSONFile.Add(dataOfJSON.ToString()); dataOfJSON.Clear(); } indOfStr = 1; } return(dataOfJSONFile); }