0

0

C# 如何将对象属性序列化为xml节点的属性而非子元素

煙雲

煙雲

发布时间:2025-10-29 11:16:01

|

296人浏览过

|

来源于php中文网

原创

使用[XmlAttribute]可将属性序列化为XML属性,仅支持基元类型、枚举和Nullable类型,可通过参数自定义属性名和命名空间,复杂类型不适用。

c# 如何将对象属性序列化为xml节点的属性而非子元素

在 C# 中使用 XmlSerializer 进行序列化时,默认会将对象的属性作为 XML 的子元素输出。如果你希望将某个属性序列化为 XML 节点的属性(attribute) 而不是子元素(element),需要使用 [XmlAttribute] 特性。

使用 [XmlAttribute] 将属性序列化为 XML 属性

给目标属性加上 [XmlAttribute] 特性,即可让 XmlSerializer 将其输出为 XML 节点的属性。

示例代码:

假设有如下类:

using System;
using System.Xml.Serialization;

[XmlRoot("Person")]
public class Person
{
    [XmlAttribute("id")]
    public int Id { get; set; }

    [XmlAttribute("name")]
    public string Name { get; set; }

    // 这个会作为子元素
    public string Email { get; set; }
}

序列化代码:

var person = new Person
{
    Id = 123,
    Name = "Alice",
    Email = "alice@example.com"
};

var serializer = new XmlSerializer(typeof(Person));
using var writer = new StringWriter();
serializer.Serialize(writer, person);
Console.WriteLine(writer.ToString());

输出的 XML 结果为:

```xml ail>alice@example.com ```

可以看到,IdName 成为了 节点的属性,而 Email 是子元素。

阿里云-虚拟数字人
阿里云-虚拟数字人

阿里云-虚拟数字人是什么? ...

下载

注意事项

[XmlAttribute] 只能用于某些简单类型,如:
- 基元类型(int、string、bool、double 等)
- 枚举
- Nullable 类型
不能用于复杂对象或集合,否则会抛出异常。

例如,以下写法是错误的

```csharp [XmlAttribute] public Address HomeAddress { get; set; } // ❌ 复杂类型不能作为 XML 属性 ```

控制属性名称和命名空间

你可以自定义属性名或指定命名空间:

  • [XmlAttribute("customName")] —— 指定属性名为 customName
  • [XmlAttribute(Namespace = "http://example.com")] —— 指定命名空间

例如:

```csharp [XmlAttribute("uid", Namespace = "http://schemas.example.com/user")] public int UserId { get; set; } ```

总结

要将对象属性序列化为 XML 节点的属性,只需:

  • 使用 [XmlAttribute] 特性标记属性
  • 确保属性类型是支持的简单类型
  • 可选地指定属性名或命名空间

基本上就这些,不复杂但容易忽略。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

315

2023.08.02

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1866

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

2084

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

964

2024.11.28

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1866

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

2084

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

964

2024.11.28

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

315

2023.08.02

java学习网站推荐汇总
java学习网站推荐汇总

本专题整合了java学习网站相关内容,阅读专题下面的文章了解更多详细内容。

6

2026.01.08

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C# 教程
C# 教程

共94课时 | 6.3万人学习

C 教程
C 教程

共75课时 | 3.9万人学习

C++教程
C++教程

共115课时 | 11.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号