C# XmlConvert类有哪些常用方法

XmlConvert 是 .NET 中专注 XML 字符串与 CLR 类型安全转换的核心类,严格遵循 W3C XML Schema 标准,支持布尔、整数、日期、浮点等类型双向转换,并提供 XML 名称编码、解码及文本转义功能。

XmlConvert 是 .NET 中用于在 XML 字符串和 .NET 类型之间安全转换的核心类,主要解决 XML 规范与 CLR 类型在格式、范围、精度上的差异问题(比如日期格式、布尔值大小写、数值溢出等)。它不负责解析或生成 XML 文档,而是专注“值级”转换,确保符合 W3C XML Schema 定义。

字符串与基础类型互转

这是最常用的一组方法,严格按 XML Schema 标准进行解析和格式化:

  • ToBoolean(string):只接受 "true""false"(区分大小写),不接受 "1""0" 或空字符串;对应 ToString(bool) 输出小写形式
  • ToInt32(string)ToString(int):支持带符号十进制整数,超出 int 范围会抛 FormatException;不支持十六进制或科学计数法
  • ToDateTime(string):严格解析 ISO 8601 格式(如 "2025-04-05T14:30:00Z""2025-04-05"),不识别中文或自定义格式;ToString(DateTime) 默认输出带时区的完整格式
  • ToDouble(string)ToString(double):支持 "INF""-INF""NaN" 等 XML 特殊浮点值,普通数字则按标准格式化

处理 XML 特殊字符与名称

用于构造合法的 XML 内容或标识符,避免手动拼接出错:

  • EncodeName(string):把任意字符串转为合法的 XML 名称(如将 "my-name""my_x002d_name"),适合动态生成元素/属性名
  • DecodeName(string):逆向还原编码后的名称
  • Escape(string):对文本内容中的 &" 等做实体编码("a"a),适用于写入文本节点
  • Unescape(string):解码已编码的文本(如从 XML 读取后还原)

字节数组与 Base64 / Hex 转换

对接 XML Schema 中的 base64BinaryhexBinary 类型:

  • ToBase64(byte[])ToHex(byte[]):将字节数组转为标准 Base64 或十六进制字符串(无前缀、全小写)
  • FromBase64(string)FromHex(string):严格校验输入格式,非法字符或长度错误直接抛异常

时区与精度控制(.NET 5+ 增强)

新版增加了对时区偏移和日期精度的显式支持:

  • ToString(DateTime, XmlDateTimeSerializationMode):可指定 RoundTrip(保留原始精度)、LocalUtc 模式
  • ToDateTime(string, XmlDateTimeSerializationMode):配合字符串解析,明确时区处理逻辑
  • 所有时间方法默认使用 DateTimeKind.Unspecified,需自行判断上下文