/// <summary> /// Reads specified object from given xml string. /// </summary> /// <typeparam name="T">The object type.</typeparam> /// <param name="schema">Serialization schema.</param> /// <param name="xml">The xml string to parse.</param> /// <param name="obj">The object to deserialize.</param> public static void ReadXmlString <T>(this IScope schema, string xml, T obj) { using (var input = new StringReader(xml)) using (var reader = XmlReaderImpl.Create(input)) { Read(schema, reader, obj); } }
public static IReader CreateReader(TextReader input, Format format, XNamespace rootNamespace) { switch (format) { case Format.Xml: return(XmlReaderImpl.Create(input)); #if FULL case Format.Json: return(JsonReaderImpl.Create(rootNamespace, input)); case Format.JsonML: return(JsonMLReader.Create(input)); #endif default: throw new NotSupportedException("format"); } }
public void TestXdto() { const string anyXml = @"<number>1</number>"; var reader = XmlReaderImpl.Create() as XmlReaderImpl; reader.SetString(anyXml); var factory = XdtoFactory.Constructor() as XdtoFactory; var expectedType = factory.Type(new XmlDataType("int")); var anyValue = factory.ReadXml(reader, expectedType) as XdtoDataValue; if (anyValue == null) { throw new Exception("XDTO не разобрался!"); } var writer = XmlWriterImpl.Create() as XmlWriterImpl; writer.SetString(); factory.WriteXml(writer, anyValue, "number"); var serializedResult = writer.Close().AsString(); Console.WriteLine("Original : {0}", anyXml); Console.WriteLine("Generated: {0}", serializedResult); reader = XmlReaderImpl.Create() as XmlReaderImpl; reader.SetString(serializedResult); var anyValueTypeExtraction = factory.ReadXml(reader) as XdtoDataValue; if (anyValueTypeExtraction == null) { throw new Exception("Новый XDTO не разобрался!"); } Console.WriteLine("Serialized:{0}", anyValueTypeExtraction.Value); }
/// <summary> /// Reads object with given reader. /// </summary> /// <typeparam name="T">The object type.</typeparam> /// <param name="schema">Serialization schema.</param> /// <param name="reader">The xml reader.</param> public static T Read <T>(this IScope schema, XmlReader reader) { using (var impl = XmlReaderImpl.Create(reader)) return(Read <T>(schema, impl)); }
/// <summary> /// Reads specified object with given reader. /// </summary> /// <typeparam name="T">The object type.</typeparam> /// <param name="schema">Serialization schema.</param> /// <param name="reader">The xml reader.</param> /// <param name="obj">The object to deserialize.</param> public static void Read <T>(this IScope schema, XmlReader reader, T obj) { using (var impl = XmlReaderImpl.Create(reader)) Read(schema, impl, obj); }
public override void CallAsFunction(int methodNumber, IValue [] arguments, out IValue retValue) { var operation = _operations [methodNumber]; retValue = ValueFactory.Create(); ConnectIfNeeded(); var headers = new MapImpl(); headers.Insert(ValueFactory.Create("Content-Type"), ValueFactory.Create("application/xml")); var xmlBody = XmlWriterImpl.Create(); xmlBody.SetString(ValueFactory.Create("UTF-8")); xmlBody.WriteStartElement("soap:Envelope"); xmlBody.WriteNamespaceMapping("xsi", "http://www.w3.org/2001/XMLSchema-instance"); xmlBody.WriteNamespaceMapping("xsd", "http://www.w3.org/2001/XMLSchema"); xmlBody.WriteNamespaceMapping("soap", "http://schemas.xmlsoap.org/soap/envelope/"); xmlBody.WriteNamespaceMapping("s", Endpoint.Interface.NamespaceURI); xmlBody.WriteStartElement("soap:Body"); var serializer = XdtoSerializerImpl.Constructor(XdtoFactory) as XdtoSerializerImpl; operation.WriteRequestBody(xmlBody, serializer, arguments); xmlBody.WriteEndElement(); // soap:Body xmlBody.WriteEndElement(); // soap:Envelope var requestString = xmlBody.Close().ToString(); if (DoDebug) { Console.WriteLine(requestString); } var responseText = _transport.Handle(requestString); var xmlResult = XmlReaderImpl.Create() as XmlReaderImpl; if (DoDebug) { Console.WriteLine(responseText); } // TODO: Отдать на разбор фабрике xmlResult.SetString(responseText); var result = operation.ParseResponse(xmlResult, serializer); if (result is SoapExceptionResponse) { throw new ScriptEngine.Machine.RuntimeException((result as SoapExceptionResponse).FaultMessage); } var soapResponse = result as SuccessfulSoapResponse; retValue = soapResponse.RetValue; foreach (var outParamData in soapResponse.OutputParameters) { var argument = arguments [outParamData.Key] as IVariable; if (argument == null) { continue; } argument.Value = outParamData.Value; } }