【问题标题】:How to use array with XmlSerializer?如何将数组与 XmlSerializer 一起使用?
【发布时间】:2016-07-24 18:44:55
【问题描述】:

我正在做一些测试以使用它。

我有以下 xml:

<?xml version="1.0"?>
<test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <ma>233</ma>
    <ma>2333</ma>
</test>

我有这个类来反序列化它:

[Serializable]
public class test
{
    public string ma { get; set; }
}

它确实包含第一个元素。现在我都想要,所以我尝试设置一个数组

[Serializable]
public class test
{
    public string[] ma { get; set; }
}

但是设置一个数组我现在有 0 导致 ma 变量,而当它不是数组时我至少有第一个。

我找到了这个答案Using XmlSerializer with an array in the root element,但他使用了另一种逻辑……我想继续使用[Serializable]

【问题讨论】:

    标签: c# xmlserializer


    【解决方案1】:

    您必须指出该数组没有单独的 xml 元素来包装其项,但数组项直接出现在 &lt;test&gt; 元素下:

    public class test
    {
        [XmlElement]
        public string[] ma { get; set; }
    }
    

    附言。有时很难获得正确的映射 - 我通常用测试数据填充一个类并序列化它,检查XmlSerializer 所做的通常会弄清楚发生了什么。

    【讨论】:

      【解决方案2】:

      您找到的答案提供了您需要的信息。 [Serializable] 对您没有帮助,因为 XmlSerializer 不使用它,请参阅Why doesn't the XmlSerializer need the type to be marked [Serializable]?

      【讨论】:

        猜你喜欢
        • 2012-10-07
        • 1970-01-01
        • 2011-02-09
        • 2017-04-23
        • 2012-01-20
        • 2020-12-04
        • 1970-01-01
        • 1970-01-01
        • 2023-02-01
        相关资源
        最近更新 更多