.net xml中无效字符处理

来源:互联网 发布:视频压缩算法工程师 编辑:程序博客网 时间:2024/05/22 12:24

        /// <summary>
        /// 将部分无效字符替换成空
        /// </summary>
        /// <param name="responseXml">Gta服务器Response后返回的Xml数据</param>
        /// <returns>string</returns>
        private string ConvertHex(string responseXml)
        {
            UTF8Encoding encoding = new UTF8Encoding();
            Byte[] responseByteArr = encoding.GetBytes(responseXml);
            for (int i = 0; i < responseByteArr.Length; i++)
            {
                if (responseByteArr[i] < 32)
                {
                    responseByteArr[i] = 32;
                }
            }
            return encoding.GetString(responseByteArr);
        } 

 

=======================================

convertXml主要用于,XML 名称及与xsd配合使用转用相磁类型

以下转自msdn

对 XML 名称进行编码和解码并提供方法在公共语言类型库类型和 XML 架构定义语言 (XSD) 类型之间进行转换。当转换数据类型时,返回的值是独立于区域设置的。

根据位于 www.w3.org/TR/2000/REC-xml-20001006.html 的可扩展标记语言 (XML) 1.0(第二版)建议,元素和属性名或 ID 值限于一系列 XML 字符。当名称包含无效字符时,EncodeName 和 DecodeName 方法用于将它们转换为有效的 XML 名称。

许多语言和应用程序(例如 Microsoft SQL Server 和 Microsoft Word)允许在它们的名称中使用 Unicode 字符,这些字符在 XML 名称中是无效的。例如,如果“Order Detail”是数据库中的一个列标题,则数据库允许在单词 Order 和 Detail 之间使用空格。但是,在 XML 中,Order 和 Detail 之间的空格将被视为无效的 XML 字符。这样,需要将该空格(一个无效的字符)转换为转义的十六进制编码,并可在以后对该编码进行解码。

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

  CopyCode image复制代码
 writer.WriteElementString(XmlConvert.EncodeName("Order Detail"),"My order");

XmlConvert 还提供了使您能够在字符串和 .NET Framework 数据类型之间进行相互转换的方法。在数据转换过程中不考虑区域设置。数据类型基于 XML 架构 (XSD) 数据类型。

Note注意

在 .NET Framework 2.0 版中,XmlReader、XmlWriter 和 XPathNavigator 类包含可处理类型化数据的新方法。这些新方法为您处理字符串到 .NET Framework 数据类型的转换。