如何将数组与XmlSerializer一起使用

本文关键字:一起 XmlSerializer 数组 | 更新日期: 2023-09-27 17:58:35

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

我有以下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变量,而当它不是数组时,我至少有第一个。

我使用根元素中带有数组的XmlSerializer找到了这个答案,但他使用了另一个逻辑。。。我想继续使用[Serializable]

如何将数组与XmlSerializer一起使用

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

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

PS。有时很难正确映射-我通常用测试数据填充一个类,并将其序列化,检查XmlSerializer是如何处理的,通常会清除正在发生的事情。

您找到的答案提供了您需要的信息。[Serializable]对您没有帮助,因为XmlSerializer没有使用它,请参阅为什么没有';XmlSerializer是否需要将类型标记为[Serializable]?