System.Xml.XmlConvert 类

本文提供了此 API 参考文档的补充说明。

XmlConvert 类在功能上等效于 Convert 类,但它支持 XML 标准。 类型系统基于 XML 架构定义语言 (XSD) 架构类型,并且返回的值总是与区域设置无关。

编码和解码

根据 W3C XML 1.0 建议,元素和属性名称或 ID 值被限制为一系列 XML 字符。 当名称包含无效字符时,可以使用此类中的 EncodeNameDecodeName 方法将它们转换为有效的 XML 名称。

例如,如果要在数据库中使用列标题“Order Detail”,则数据库允许这两个单词之间有空格。 但是,在 XML 中,“Order”和“Detail”之间的空格会被视为无效的 XML 字符。 必须将它转换为转义的十六进制编码,然后对其进行解码。

可以将 EncodeName 方法与 XmlWriter 类一起使用,以确保所写入的名称是有效的 XML 名称。 以下 C# 代码将名称“Order Detail”转换为有效的 XML 名称并写入元素 <Order_0x0020_Detail>My order</Order_0x0020_Detail>

writer.WriteElementString(XmlConvert.EncodeName("Order Detail"),"My order");

以下 XmlConvert 方法可执行编码和解码。

方法 说明
EncodeName 获取一个名称,并返回编码的名称以及由转义字符串替换的任何无效字符。 此方法允许冒号位于任何位置,这意味着根据 W3C XML 1.0 中的命名空间建议,名称可能仍然无效。
EncodeNmToken 获取一个名称并返回编码的名称。
EncodeLocalName EncodeName 相同,但它还对冒号进行编码,确保该名称可以作为命名空间限定名的 LocalName 部分使用。
DecodeName 反转对所有编码方法的转换。

名称验证

XmlConvert 类包含两种方法,这些方法可检查元素或属性名称中的字符,并验证名称是否符合 W3C XML 1.0 建议所设置的规则:

  • VerifyName 可检查字符并验证名称是否有效。 如果名称有效,则该方法将返回该名称,如果名称无效,则会引发异常。
  • VerifyNCName 可执行相同的验证,但接受非限定名称。

XmlConvert 包含用于验证令牌、空白字符、公共 ID 和其他字符串的其他方法。

数据类型转换

XmlConvert 还提供了各种方法,使你能够将数据从字符串转换为强类型化数据类型。 例如,ToDateTime 方法可将字符串转换为其 DateTime 等效项。 这样做很有用,因为 XmlReader 类中的大多数方法都将数据作为字符串返回。 读取数据后,可以在使用数据前将其转换为正确的数据类型。 ToString 重载通过将强类型化数据转换为字符串来提供补充操作。 例如,如果要将数据添加到网页上的文本框,这非常有用。 数据转换期间不会考虑区域设置。 数据类型基于 XML 架构 (XSD) 数据类型。