简体   繁体   English

C#-序列化时在节点中添加属性

[英]C# - Add attribute in node when serialization

I have two class : 我有两节课:

public class Customer
{
    public string FirstName { get; set; }

    public string LastName { get; set; }
}

public class myclass
{
    public string Propertie1 { get; set; }

    public Customer[] Customers { get; set; }
}   

And on instance + serializer : 在实例+序列化器上:

myclass c = new myclass()
{
    Propertie1 = "value",

    Customers = new Customer[]
    {
        new Customer()
        {
            FirstName = "FirstName1",
            LastName = "LastName1"
        },
        new Customer()
        {
            FirstName = "FirstName2",
            LastName = "LastName2"
        }
    }
};

XmlSerializer xs = new XmlSerializer(typeof(myclass));
using (StreamWriter wr = new StreamWriter(@"c:/Temp/customers.xml"))
{
    xs.Serialize(wr, c);
}

How to add a attribute in my node for each ? 如何在每个节点的节点中添加属性? for exemple 举个例子

With XmlAttribute maybe ? 与XmlAttribute也许? But I don't know how to use 但是我不知道怎么用

Thank's 谢谢

I would do the following: 我将执行以下操作:

Add another property 添加其他属性

public class Customer
{
    [XmlAttribute]
    public int id {get;set;}

    public string FirstName { get; set; }
    public string LastName { get; set; }
}

In assinging values to the Customer object: 在将值分配给“客户”对象时:

new Customer()
        { 
            id = 1,
            FirstName = "FirstName1",
            LastName = "LastName1"
        },

This would give the output for every customer when an id is assigned as follow 分配ID时,这将为每个客户提供输出

<myclass>
    <Customer id=1>
      <FirstName>FirstName1</FirstName>
      <LastName>LastName1</LastName>
    </Customer>
    <Customer id=2>
      <FirstName>FirstName2</FirstName>
      <LastName>LastName2</LastName>
    </Customer>
</myclass>

I would assume the Propertie1 in myClass will also have the [XmlAttribute] making it 我假设myClass中的Propertie1也将具有[XmlAttribute]

<myclass Propertie1 = "<assinged value>">

This post provides a good overview 这篇文章提供了很好的概述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM