0
Я пытаюсь десериализовать относительно простую строку в C# ниже. Ответ XML получен от вызова REST API. Ответ от API хранится в строке, потому что встроенный конвертер для Spring.Rest не выполняет преобразование в объект XMLDocument, поэтому я пытаюсь создать работу.XMLSerialization без корневого элемента
Вот основной сценарий.
//Response from API
string emaildata="<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"
+"<email-address>[email protected]</email-address>";
//Code calling the conversion of the string
Console.WriteLine(xmlConversion.XmlDeserializeFromString(emaildata,typeof(email)).ToString());
//Object being Deserialized into
public class email
{
[System.Xml.Serialization.XmlElement("email-address")]
public string emailAddress { get; set; }
}
//Conversion Class
public static class xmlConversion
{
public static string XmlSerializeToString(this object objectInstance)
{
var serializer = new XmlSerializer(objectInstance.GetType());
var sb = new StringBuilder();
using (TextWriter writer = new StringWriter(sb))
{
serializer.Serialize(writer, objectInstance);
}
return sb.ToString();
}
public static T XmlDeserializeFromString<T>(string objectData)
{
return (T)XmlDeserializeFromString(objectData, typeof(T));
}
public static object XmlDeserializeFromString(string objectData, Type type)
{
var serializer = new XmlSerializer(type);
object result;
using (TextReader reader = new StringReader(objectData))
{
result = serializer.Deserialize(reader);
}
return result;
}
}
Отлично, это работает. Я нашел ошибку в моей инструкции Console.WriteLine. Я исправил это следующим образом ... email myemail = (email) xmlConversion.XmlDeserializeFromString (emaildata, typeof (email)); Console.WriteLine (myemail.emailAddress); –