答案:C#中通过XmlSerializer可将类对象序列化为XML字符串。需确保类为公共类并具有公共属性或字段,使用[XmlElement]、[XmlAttribute]等特性控制格式;创建XmlSerializer实例,结合StringWriter与XmlWriter输出带缩进的XML字符串;调用时传入对象即可生成含XML声明、命名空间及属性的完整XML;注意类需有无参构造函数,集合宜用List,可通过XmlSerializerNamespaces去除默认命名空间。

在C#中,将一个类对象序列化为XML字符串可以通过System.Xml.Serialization.XmlSerializer类来实现。这个方法简单高效,适用于大多数需要将对象保存为XML格式或通过网络传输的场景。
1. 确保类是可序列化的
要使一个类能够被序列化为XML,该类必须是公共的,并且具有公共属性或字段。你不需要显式添加[Serializable]特性(那是用于二进制序列化的),但需要使用[XmlElement]、[XmlAttribute]等来控制XML输出格式(可选)。
示例类:
using System;
using System.Xml.Serialization;
[Serializable]
public class Person
{
[XmlElement("Name")]
public string Name { get; set; }
[XmlElement("Age")]
public int Age { get; set; }
[XmlAttribute("Id")]
public int Id { get; set; }
}
2. 使用XmlSerializer序列化对象
创建一个XmlSerializer实例,然后调用其Serialize方法,将对象写入StringWriter,从而得到XML字符串。
实现代码:
本文档主要讲述的是JSON.NET 简单的使用;JSON.NET使用来将.NET中的对象转换为JSON字符串(序列化),或者将JSON字符串转换为.NET中已有类型的对象(反序列化?)。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
using System; using System.IO; using System.Text; using System.Xml.Serialization; public static string SerializeToXml(T obj) { if (obj == null) return null; var serializer = new XmlSerializer(typeof(T)); var settings = new XmlWriterSettings { Indent = true, Encoding = Encoding.UTF8, OmitXmlDeclaration = false }; using (var stringWriter = new StringWriter()) using (var xmlWriter = System.Xml.XmlWriter.Create(stringWriter, settings)) { serializer.Serialize(xmlWriter, obj); return stringWriter.ToString(); } }
3. 调用示例
使用上面的方法将一个Person对象转换为XML字符串。
var person = new Person
{
Id = 1,
Name = "张三",
Age = 25
};
string xml = SerializeToXml(person);
Console.WriteLine(xml);
输出结果类似:
张三 25
4. 注意事项
- 类必须有公共无参构造函数,否则序列化会失败。
- 只读属性、私有字段默认不会被序列化。
- 若包含集合,建议使用泛型集合如
List,它们支持序列化。 - 若需去除命名空间声明,可通过
XmlSerializerNamespaces控制。
去除XML命名空间示例:
var namespaces = new XmlSerializerNamespaces();
namespaces.Add("", ""); // 去除默认命名空间
serializer.Serialize(xmlWriter, obj, namespaces);
基本上就这些。只要类结构清晰并正确使用特性,C#的XML序列化非常方便实用。









