gpt4 book ai didi

c# - XML 反序列化 : different xml schema maps to the same C# class

转载 作者:数据小太阳 更新时间:2023-10-29 02:06:39 24 4
gpt4 key购买 nike

我的程序的其中一项工作是从 xml 文件中读取客户列表并将它们反序列化为 C# 类,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<customers>
<customer>
<name>john</name>
<id>1</id>
</customer>
<customer>
<name>mike</name>
<id>2</id>
</customer>
</customers>

C#类:

[XmlRoot("customers")]
public class CustomerList {
[XmlElement("customer")]
public Customer[] Customers { get; set; }
}

public class Customer {
[XmlElement("name")]
public String Name {get; set;}

[XmlElement("id")]
public String Id {get; set;}
}

但最近客户想要将标签名称从<id> 更改为至 <code>像下面这样:

<?xml version="1.0" encoding="utf-8"?>
<customers>
<customer>
<name>john</name>
<code>1</code>
</customer>
<customer>
<name>mike</name>
<code>2</code>
</customer>
</customers>

“code”的值与之前的标签“id”具有相同的含义。他们希望在过渡期间修改程序,以便在一段时间内识别这两个标签。

有什么简单的方法可以实现吗?谢谢。

最佳答案

为什么不使用一个私有(private)字段而使用两个不同的 getter/setter?只要这两个标记都没有出现在 XML 中,它就可以工作。

[XmlRoot("customers")]
public class CustomerList {
[XmlElement("customer")]
public Customer[] Customers { get; set; }
}

public class Customer {
private String _id;

[XmlElement("name")]
public String Name {get; set;}

[XmlElement("id")]
public String Id {get{return _id;} set{_id = value;}}

[XmlElement("code")]
public String Code {get{return _id;} set{_id = value;}}
}

关于c# - XML 反序列化 : different xml schema maps to the same C# class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15424121/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com