private string ClassToXmlCheck(ElementList elementList) { try { var serializer = new XmlSerializer(typeof(ElementList)); string xmlStr; using (StringWriter writer = new Utf8StringWriter()) { serializer.Serialize(writer, elementList); xmlStr = writer.ToString(); } return(xmlStr); } catch (Exception ex) { throw new Exception("Response failed to convert Class", ex); } }
private ElementList XmlToClassCheck(string xmlStr) { try { byte[] byteArray = Encoding.UTF8.GetBytes(xmlStr); XmlSerializer serializer = new XmlSerializer(typeof(ElementList)); StreamReader reader = new StreamReader(new MemoryStream(byteArray)); ElementList elementResp = null; elementResp = (ElementList)serializer.Deserialize(reader); reader.Close(); return(elementResp); } catch (Exception ex) { throw new Exception("Response failed to convert XML", ex); } }
public Response XmlToClassUsingXmlDocument(string xmlStr) { try { ResponseTypes rType = ResponseTypes.Invalid; string value = ""; #region value type if (xmlStr.Contains("<Value type=")) { string subXmlStr = t.Locate(xmlStr, "<Response>", "</Response>").Trim(); string valueTypeLower = t.Locate(xmlStr, "Value type=\"", "\"").Trim().ToLower(); //digs out value's type value = t.Locate(xmlStr, "\">", "</").Trim(); switch (valueTypeLower) { case "success": rType = ResponseTypes.Success; break; case "error": rType = ResponseTypes.Error; break; case "parsing": rType = ResponseTypes.Parsing; break; case "received": rType = ResponseTypes.Received; break; case "invalid": rType = ResponseTypes.Invalid; break; default: throw new IndexOutOfRangeException("ResponseType:'" + valueTypeLower + "' is not known. " + xmlStr); } } #endregion Response resp = new Response(rType, value); XmlDocument xDoc = new XmlDocument(); xDoc.LoadXml(xmlStr); XmlNode checks = xDoc.DocumentElement.LastChild; foreach (XmlNode xmlCheck in checks.ChildNodes) { string rawXml = xmlCheck.OuterXml.ToString(); { Check check = new Check(); check.UnitId = t.Locate(rawXml, " unit_id=\"", "\""); check.Date = t.Locate(rawXml, " date=\"", "\""); check.Worker = t.Locate(rawXml, " worker=\"", "\""); check.Id = int.Parse(t.Locate(rawXml, " id=\"", "\"")); check.WorkerId = t.Locate(rawXml, " worker_id=\"", "\""); while (rawXml.Contains("<ElementList>")) { string inderXmlStr = "<?xml version=\"1.0\" encoding=\"UTF - 8\"?><ElementList>" + t.Locate(rawXml, "<ElementList>", "</ElementList>") + "</ElementList>"; ElementList eResp = XmlToClassCheck(inderXmlStr); check.ElementList.Add(eResp); int index = rawXml.IndexOf("</ElementList>"); rawXml = rawXml.Substring(index + 14); //removes extracted xml } resp.Checks.Add(check); } } return(resp); } catch (Exception ex) { throw new Exception("Response failed to convert XML", ex); } }
public Response XmlToClass(string xmlStr) { try { ResponseTypes rType = ResponseTypes.Invalid; string value = ""; #region value type if (xmlStr.Contains("<Value type=")) { string subXmlStr = t.Locate(xmlStr, "<Response>", "</Response>").Trim(); string valueTypeLower = t.Locate(xmlStr, "Value type=\"", "\"").Trim().ToLower(); //digs out value's type value = t.Locate(xmlStr, "\">", "</").Trim(); switch (valueTypeLower) { case "success": rType = ResponseTypes.Success; break; case "error": rType = ResponseTypes.Error; break; case "parsing": rType = ResponseTypes.Parsing; break; case "received": rType = ResponseTypes.Received; break; case "invalid": rType = ResponseTypes.Invalid; break; default: throw new IndexOutOfRangeException("ResponseType:'" + valueTypeLower + "' is not known. " + xmlStr); } } #endregion Response resp = new Response(rType, value); #region Unit fetched if (xmlStr.Contains("<Unit fetched_at=")) { string subXmlStr = xmlStr.Substring(xmlStr.IndexOf("<Unit fetched_at=\"") + 18); // 18 magic int = "<Unit fetched_at=\"".Length; string dateTimeStr = subXmlStr.Substring(0, subXmlStr.IndexOf("\"")); //digs out unit's dateTime string idStr = subXmlStr.Substring(dateTimeStr.Length + 6, subXmlStr.IndexOf("\"/>") - dateTimeStr.Length - 6); //digs out value's text resp.UnitFetchedAt = dateTimeStr; resp.UnitId = idStr; } #endregion #region checks string checkXmlStr = xmlStr; while (checkXmlStr.Contains("<Check ")) { Check check = new Check(); check.UnitId = t.Locate(checkXmlStr, " unit_id=\"", "\""); check.Date = t.Locate(checkXmlStr, " date=\"", "\""); check.Worker = t.Locate(checkXmlStr, " worker=\"", "\""); check.Id = int.Parse(t.Locate(checkXmlStr, " id=\"", "\"")); check.WorkerId = t.Locate(checkXmlStr, " worker_id=\"", "\""); while (checkXmlStr.Contains("<ElementList>")) { string inderXmlStr = "<?xml version=\"1.0\" encoding=\"UTF - 8\"?><ElementList>" + t.Locate(checkXmlStr, "<ElementList>", "</ElementList>") + "</ElementList>"; ElementList eResp = XmlToClassCheck(inderXmlStr); check.ElementList.Add(eResp); int index = checkXmlStr.IndexOf("</ElementList>"); checkXmlStr = checkXmlStr.Substring(index + 14); //removes extracted xml } resp.Checks.Add(check); } #endregion return(resp); } catch (Exception ex) { throw new Exception("Response failed to convert XML", ex); } }