如何在XmlSerializer中使用数组?

时间:2016-07-24 18:44:56

标签: c# xmlserializer

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

我有以下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]

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您必须指出数组没有单独的xml元素来包装其项目,但数组项目直接显示在<test>元素下:

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

PS。有时很难得到正确的映射 - 我通常会在一个包含测试数据的类中填写 serilalize 它,检查XmlSerializer所做的通常会清除正在发生的事情。

相关问题