0

以下のC#で比較的単純な文字列を逆シリアル化しようとしています。REST API 呼び出しから XML 応答を受け取ります。Spring.Rest の組み込みコンバーターが XMLDocument オブジェクトへの変換に失敗しているため、API からの応答が文字列に格納されているため、回避策を作成しようとしています。

基本的なシナリオは次のとおりです。

// Response from API
string emailData = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"
    + "<email-address>xyz@gmail.com</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;
    } 
}
4

1 に答える 1

2

クラスの定義を次のように変更してみてください。

[System.Xml.Serialization.XmlRoot("email-address")]
public class email
{
    [System.Xml.Serialization.XmlText()]
    public string emailAddress { get; set; }

} 
于 2013-08-15T03:03:10.003 に答える