将XML字符串转换为通用列表C#

时间:2016-12-09 09:05:32

标签: c# json generics xml-serialization

我有不同的xml字符串应该映射到不同的对象,就像我们将json字符串转换为泛型列表有没有办法将xml字符串转换为通用列表而不指定标记名称。请参阅json反序列化代码:

public List<T> DeSerialize<T>(string input)
{
    var serializer = new DataContractJsonSerializer(typeof(List<T>));

    using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(input)))
    {
        return (List<T>)serializer.ReadObject(ms);
    }
}

如果对象的属性名称和json名称相同,上面的代码将反序列化为通用列表。

我现在的代码将转换为特定类型而非通用列表 见下面的代码。这应该在不指定映射xmlnode的额外属性属性的情况下完成。请建议一个通用的解决方案。

public static T FromXmlString<T>(string xmlString)
{
    var reader = new StringReader(xmlString);
    var serializer = new XmlSerializer(typeof(T));
    var instance = (T)serializer.Deserialize(reader);

    return instance;
}

1 个答案:

答案 0 :(得分:0)

您可以这样:

  1. 打开开发人员命令提示符您可以在“开始”菜单中找到它&gt; 节目&gt; Microsoft Visual Studio 2012&gt; Visual Studio工具或者如果 你有Windows 8可以开始输入开发人员命令提示符 开始屏幕
  2. 通过键入cd / D将位置更改为XML文件目录 “C:\路径\到\ XML”
  3. 通过键入xsd file.xml
  4. 从xml文件创建XSD文件
  5. 键入xsd / c file.xsd
  6. 创建C#类

    就是这样!您已从C:\ path \到\ xml \ file.cs

    中的xml文件生成C#类