C# 如何将xml的节点值映射到类的不同属性名

使用[XmlElement]可将XML节点映射到不同名的类属性,如Name节点映射到FullName属性;2. 反序列化时XmlSerializer自动匹配特性指定的节点名;3. 支持嵌套类映射,通过[XmlElement]处理子节点结构;4. 其他特性如[XmlAttribute]、[XmlArray]等支持属性、集合等复杂场景。

c# 如何将xml的节点值映射到类的不同属性名

在C#中,可以使用 XmlSerializer 将XML节点映射到类的属性。如果XML节点名称和类属性名不同,可以通过特性(Attribute)来指定映射关系。

1. 使用 [XmlElement] 特性进行字段映射

通过 [XmlElement] 特性,你可以将XML中的节点名绑定到类中任意名称的属性上。

例如,有如下XML:

  张三  25

你想映射到类中名为 FullName 的属性而不是 Name,可以这样定义类:

using System.Xml.Serialization;[XmlRoot("Person")]public class Person{    [XmlElement("Name")]    public string FullName { get; set; }    [XmlElement("Age")]    public int Age { get; set; }}

序列化或反序列化时,XmlSerializer 会自动将 XML 中的 节点值赋给 FullName 属性。

2. 反序列化示例代码

将XML字符串反序列化为对象:

using System;using System.IO;using System.Xml.Serialization;string xml = @"  张三  25";XmlSerializer serializer = new XmlSerializer(typeof(Person));using (StringReader reader = new StringReader(xml)){    Person person = (Person)serializer.Deserialize(reader);    Console.WriteLine($"姓名: {person.FullName}, 年龄: {person.Age}");}

3. 支持嵌套节点和复杂结构

对于嵌套的XML结构,也可以用同样的方式处理。

比如XML中有子节点:

“`xmlasicInfo> 张三“`

可以定义嵌套类并映射:

[XmlRoot("Person")]public class Person{    [XmlElement("BasicInfo")]    public BasicInfo Info { get; set; }}public class BasicInfo{    [XmlElement("FirstName")]    public string FirstName { get; set; }    [XmlElement("LastName")]    public string LastName { get; set; }}

4. 其他常用特性

[XmlAttribute]:用于映射XML属性而非子节点。[XmlArray][XmlArrayItem]:用于处理集合。[DefaultValue]:设置默认值,避免生成冗余XML。

基本上就这些。只要在属性上加上合适的特性,就能灵活控制XML节点与C#类属性之间的映射关系,即使名字完全不同也没问题。

以上就是C# 如何将xml的节点值映射到类的不同属性名的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1442044.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 18:40:47
下一篇 2025年12月17日 18:41:03

相关推荐

发表回复

登录后才能评论
关注微信