Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 序列化XML中不带类名的列表元素_C#_Xml_List_Serialization - Fatal编程技术网

C# 序列化XML中不带类名的列表元素

C# 序列化XML中不带类名的列表元素,c#,xml,list,serialization,C#,Xml,List,Serialization,我参加了以下课程: public class Family { public List<ChildAge> childAges { get; set; } } 当我将其序列化为XML时,我得到: <root> <Family> <ChildAges> <ChildAge> <Age>10</Age>

我参加了以下课程:

public class Family
{
    public List<ChildAge> childAges { get; set; }
}
当我将其序列化为XML时,我得到:

<root>
    <Family>
        <ChildAges>
            <ChildAge>
                <Age>10</Age>
            </ChildAge>
            <ChildAge>
                <Age>8</Age>
            </ChildAge>
        </ChildAges>
    </Family>
</root>

10
8.
我需要更改什么才能获得此信息:

<root>
    <Family>
        <ChildAges>
            <Age>10</Age>
            <Age>8</Age>
        </ChildAges>
    </Family>
<root>

10
8.
谢谢

通过提供自己的WriteXml实现,您可以做到这一点(还有更多)

请看下面的代码

public class Family : IXmlSerializable
{
    public List<ChildAge> childAges { get; set; }

    public void WriteXml(XmlWriter writer)
    {
        foreach(ChildAge ca in childAges)
            writer.WriteElementString("Age", ca.Age.ToString());
    }

    public void ReadXml(XmlReader reader)
    {
        // [...]
    }

    public XmlSchema GetSchema()
    {
        return (null);
    }
}

public class ChildAge
{
    public int Age { get; set; }
}

public class Program
{
    static void Main(string[] args)
    {
        Family f = new Family();
        f.childAges = new List<ChildAge>();
        f.childAges.Add(new ChildAge() { Age = 10 });
        f.childAges.Add(new ChildAge() { Age = 8 });

        XmlSerializer xs = new XmlSerializer(typeof(Family));

        XmlSerializerNamespaces xmlnsEmpty;
        xmlnsEmpty = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty });

        XmlWriterSettings writerSettings = new XmlWriterSettings();
        writerSettings.Indent = true;
        writerSettings.OmitXmlDeclaration = true;

        StringBuilder sb = new StringBuilder();
        XmlWriter writer = XmlTextWriter.Create(sb, writerSettings);
        xs.Serialize(writer, f, xmlnsEmpty);

        Console.WriteLine(sb.ToString());
        Console.ReadLine();
    }
}
公共类族:IXmlSerializable
{
公共列表子级{get;set;}
public void WriteXml(XmlWriter)
{
foreach(儿童年龄ca在儿童年龄中)
writer.WriteElementString(“Age”,ca.Age.ToString());
}
公共void ReadXml(XmlReader)
{
// [...]
}
公共XmlSchema GetSchema()
{
返回(空);
}
}
公营儿童
{
公共整数{get;set;}
}
公共课程
{
静态void Main(字符串[]参数)
{
族f=新族();
f、 childAges=新列表();
f、 添加(new ChildAge(){Age=10});
f、 Add(new ChildAge(){Age=8});
XmlSerializer xs=新的XmlSerializer(typeof(Family));
XmlSerializerNamespaces xmlnsEmpty;
xmlnsEmpty=newxmlserializernamespace(new[]{XmlQualifiedName.Empty});
XmlWriterSettings writerSettings=新的XmlWriterSettings();
writerSettings.Indent=true;
writerSettings.OmitXmlDeclaration=true;
StringBuilder sb=新的StringBuilder();
XmlWriter=XmlTextWriter.Create(sb,writerSettings);
序列化(writer,f,xmlnsEmpty);
Console.WriteLine(sb.ToString());
Console.ReadLine();
}
}

当您在“childage”下有更多属性要序列化时,问题就开始了 您可以简单地使用列表和以下注释:

[XmlArray("ChildAges")]
[XmlArrayItem("Age")]
List<int> ChildrenAges { get; set; }
[XmlArray(“子代”)]
[XmlArrayItem(“年龄”)]
List ChildrenAges{get;set;}

你已经差不多完成了

你为什么需要这个?你得先提一下。
[XmlArray("ChildAges")]
[XmlArrayItem("Age")]
List<int> ChildrenAges { get; set; }