【问题标题】:C# How to serialize mutiple classes (from object)C#如何序列化多个类(从对象)
【发布时间】:2014-05-20 12:23:53
【问题描述】:

这是银光项目。我有以下 XML:

<pars>
    <par>            
    </par>

    <s>Auto1</s>

    <par>           
    </par>      

    <par>
    </par>
</pars>

如您所见,有两个Parameter(在Parameters 下)和一个seperators

它们都在 xml 中的 Parameters 下(以及 c# 代码中的 Parameters.cs)。

我想做什么? 我有以下与该 xml 对应的 C# 类(使用 Parameters.cs 类的对象,我再次尝试获取相同的 xml)。

【问题讨论】:

  • @Jakub 感谢您的链接,但我不必使用 Visual Studio 的任何内置功能。我必须更改我的代码才能显示类似的 xml。你能帮我做这件事吗??
  • [XmlElement("parameter")] public List&lt;Parameter&gt; Parameter { get; set; } 不是列表的有效注释。你应该使用类似的东西:[XmlArray("parameterList")] [XmlArrayItem("parameter", typeof(Parameter))]
  • @rosko 我已经调试过了,这个 c# 分类正在反序列化我在代码开始时给出的 xml,并且对象在调试时显示每个元素的 xml 名称和值> 和 并且它正在工作,我必须使用

标签: c# xml serialization xml-serialization xmlserializer


【解决方案1】:

首先,我不确定您是否需要在 Parameters.cs 和 Parameter.cs 中添加一个构造函数,您可以删除它们。

其次,你能告诉我们两个 xml 有什么不同吗?只是标题吗?

尝试通过以下方式更改您的序列化:

        using (MemoryStream ms = new MemoryStream())
        {
            //Serialization
            XmlSerializer xs = new XmlSerializer(typeof(ClassToSerialize));
            xs.Serialize(ms, ObjectToSerialize);
            ms.Position = 0;

            XmlDocument xDoc = new XmlDocument();
            xDoc.Load(ms);
        }

【讨论】:

  • 我删除了构造函数,并编辑了调试时获得的输出快照。只是我知道你是谁,我不知道为什么。
  • 在删除构造函数时仍然相同。
  • 是的,构造函数的句子只是说没用:)。课程似乎正确,您可以尝试更改
  • 改变什么?在我的课上?
  • 编译器如何知道xml中哪个参数元素属于哪个
猜你喜欢
  • 1970-01-01
  • 2015-09-26
  • 2020-07-19
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 2015-10-08
  • 1970-01-01
相关资源
最近更新 更多