序列化XML数组,属性为Object

时间:2016-04-13 16:55:22

标签: c# xml wcf xml-serialization

如何定义要反序列化以下XML的对象:

accepts_nested_attributes_for

2 个答案:

答案 0 :(得分:1)

我强烈建议使用xsd.exe,它可以帮助从XDR,XML和XSD文件或运行时程序集中的类生成XML模式或公共语言运行时类。

  1. 打开VS Developer Command Prompt
  2. 输入xsd.exe PathToXmlFile.xml /outputdir:OutputDir并按Enter - 这将生成*.xsd个文件
  3. 键入xsd.exe PreviouslyCreatedXsdFile.xsd /classes /outputdir:OutputDir并按Enter - 这将生成*.cs文件(类定义)。
  4. 这就是全部!

    尝试!

答案 1 :(得分:1)

试试这个......

Usings .....

using System;
using System.Xml.Serialization;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Xml;

类.....

[XmlRoot(ElementName = "S3")]
public class S3
{
    [XmlAttribute(AttributeName = "C")]
    public string C { get; set; }
}

[XmlRoot(ElementName = "S2")]
public class S2
{
    [XmlElement(ElementName = "S3")]
    public List<S3> S3 { get; set; }
    [XmlAttribute(AttributeName = "B")]
    public string B { get; set; }
}

[XmlRoot(ElementName = "S1")]
public class S1
{
    [XmlElement(ElementName = "S2")]
    public List<S2> S2 { get; set; }
    [XmlAttribute(AttributeName = "A")]
    public string A { get; set; }
}

[XmlRoot(ElementName = "body")]
public class Body
{
    [XmlElement(ElementName = "S1")]
    public List<S1> S1 { get; set; }
}

代码.....

        string strXML = File.ReadAllText("xml.xml");
        byte[] bufXML = ASCIIEncoding.UTF8.GetBytes(strXML);
        MemoryStream ms1 = new MemoryStream(bufXML);

        // Deserialize to object
        XmlSerializer serializer = new XmlSerializer(typeof(Body));
        try
        {
            using (XmlReader reader = new XmlTextReader(ms1))
            {
                Body deserializedXML = (Body)serializer.Deserialize(reader);

            }// put a break point here and mouse-over deserializedXML….
        }
        catch (Exception ex)
        {
            throw;
        }

你的XML .....

<body>
<S1 A="1">
    <S2 B="1">
        <S3 C="1"/>
        <S3 C="1"/>
    </S2>
    <S2 B="2"/>
</S1>
<S1 A="2"/>
</body>

我添加了结束标记.....我正在从一个名为xml.xml的应用程序构建文件夹中的文件中读取您的XML ...您需要从其他地方获取XML字符串或创建xml.xml文件并保存您的XML以使上面的代码工作