C# XML转义字符的转换

本文介绍了一种在不引用.NET类库的情况下,处理XML中特殊字符(如&、<、>和)的方法。通过手动替换的方式实现了转义字符处理,适用于控制台程序。

在XML中需要插入自己的字符串,但是发现&<>"这些字符无法替换掉,使用正常的Replace没有效果,网上也没有找到合适的。并且由于是控制台程序,无法引用NET类,经过查询MSDN得到些启发,写下这个转换方法,以供参考。如果有更好的方法可以共享下! 

       #region XML转义字符处理
        
/// <summary>
        
/// XML转义字符处理
        
/// </summary>
        public static string ConvertXml(string xml)
        {

            xml 
= (char)1 + xml;   //为了避免首字母为要替换的字符,前加前缀

            
for (int intNext = 0true; )
            {
                
int intIndexOf = xml.IndexOf("&", intNext);
                intNext 
= intIndexOf + 1;  //避免&被重复替换
                if (intIndexOf <= 0)
                {
                    
break;
                }
                
else
                {
                    xml 
= xml.Substring(0, intIndexOf) + "&amp;" + xml.Substring(intIndexOf + 1);
                }
            }

            
for (; true; )
            {
                
int intIndexOf = xml.IndexOf("<");
                
if (intIndexOf <= 0)
                {
                    
break;
                }
                
else
                {
                    xml 
= xml.Substring(0, intIndexOf) + "&lt;" + xml.Substring(intIndexOf + 1);
                }
            }

            
for (; true; )
            {
                
int intIndexOf = xml.IndexOf(">");
                
if (intIndexOf <= 0)
                {
                    
break;
                }
                
else
                {
                    xml 
= xml.Substring(0, intIndexOf) + "&gt;" + xml.Substring(intIndexOf + 1);
                }
            }

            
for (; true; )
            {
                
int intIndexOf = xml.IndexOf("\"");
                if (intIndexOf <= 0)
                {
                    
break;
                }
                
else
                {
                    xml 
= xml.Substring(0, intIndexOf) + "&quot;" + xml.Substring(intIndexOf + 1);
                }
            }

            
return xml.Replace(((char)1).ToString(), "");

        }
        
#endregion

转载于:https://www.cnblogs.com/baishifeng/archive/2009/05/12/1454589.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值