如何通过使用多个名称空间来解析xml字符串?

时间:2018-07-24 09:05:12

标签: c# xml parsing namespaces deserialization

我正在尝试解析具有各种不同响应类型的xml字符串集。我为每个响应创建了不同的名称空间,并定义了类以反序列化xml字符串。

namespace MyManager.ResponseA
{
    public class Envelope
    {
        ...
        // some children for A
        ...
    }
}

namespace MyManager.ResponseB
{
    public class Envelope
    {
        ...
        // some different children for B
        ...
    }
}

,依此类推。我这样做的原因是我有多个不同的响应,但是所有响应都始于周围的信封,我将其用作xml解析的源。子对象却有所不同。

说我想为这些类编写一个反序列化器。有没有一种方法可以将名称空间用作通用类型或完成其他操作?

这是我的意图,但是显然这是行不通的。我想将我的命名空间用作通用类型T:

public T Deserialize<T>(string key)
    {
        T.Envelope envelope = null;
        StringReader stringReader = null;
        XmlSerializer xmlSerializer = null;
        XmlTextReader xmlTextReader = null;
        try
        {
            stringReader = new StringReader(response);
            xmlSerializer = new XmlSerializer(typeof(T.Envelope));
            xmlTextReader = new XmlTextReader(stringReader);
            envelope = (T.Envelope)xmlSerializer.Deserialize(xmlTextReader);
        }
        catch (Exception exp)
        {
            Console.Write(exp.ToString());
        }
        finally
        {
            if (xmlTextReader != null)
            {
                xmlTextReader.Close();
            }
            if (stringReader != null)
            {
                stringReader.Close();
            }
        }
        return T;
    }

所以我的问题是:如何通过定义适当的名称空间来查找此成员?我的整个架构有缺陷吗? (我认同) 解析可预测但形状不同的xml文件的适当做法是什么?预先谢谢你。

0 个答案:

没有答案