当前位置: 代码迷 >> ASP.NET >> 过虑xml 非法字符,该怎么解决
  详细解决方案

过虑xml 非法字符,该怎么解决

热度:5631   发布时间:2013-02-25 00:00:00.0
过虑xml 非法字符
再解析   xml   文件时,由于其中包含16进制的非法字符而出错
即使是包含在 <![CDATA[   内容   ]]>   中也会出错


当前的解决方法是出现在一个替换一个

                        content   =   content.Replace( " ",   "   ");
                        content   =   content.Replace( "&shy; ",   " ");
                        content   =   content.Replace( "&#8226; ",   " ");

求一个过虑全部非法字符的方法:

------解决方案--------------------------------------------------------
一共有5个!
字符 HTML字符 字符编码
和(and) & &amp; &#38;
单引号 ' &apos; &#39;
双引号 " &quot; &#34;
大于号 > &gt; &#62;
小于号 < &lt; &#60;

------解决方案--------------------------------------------------------
如果有非法的字符则以认为XML格式不正确而不处理;

在生成Xml的时候使用正确的途径来编写,比如使用XmlWriter或XmlDocument等,从而可以一定程序上避免非法字符.
------解决方案--------------------------------------------------------
从而可以一定程序上避免非法字符是正确做法。

字符 HTML字符 字符编码
和(and) & &amp; &#38;
单引号 &apos; &apos; &#39;
双引号 " &quot; &#34;
大于号 > &gt; &#62;
小于号 < &lt; &#60;
------解决方案--------------------------------------------------------
我最近也在弄这个.顺利弄了一个方法.
希望可以帮到楼主
C# code
public static string FullHTMLEncode(string inputVal)    {        if (inputVal != null)        {            inputVal = inputVal.Replace(">", "&gt;");            inputVal = inputVal.Replace("<", "&lt;");            inputVal = inputVal.Replace("\'", "&apos;");            inputVal = inputVal.Replace("\"", "&quot;");            inputVal = inputVal.Replace(string.Format("{0}", (char)32), "&nbsp;");            inputVal = inputVal.Replace(string.Format("{0}", (char)9), "&nbsp;");            inputVal = inputVal.Replace(string.Format("{0}", (char)34), "&quot;");            inputVal = inputVal.Replace(string.Format("{0}", (char)39), "&#39;");            inputVal = inputVal.Replace(string.Format("{0}", (char)13), "");                    }        return inputVal;    }
------解决方案--------------------------------------------------------
解决方法,节点内容编码。

1)base64编码形式存放
2)html代码转成unicode编码存放(这个说明可能有误)


这个的转码函数的vbs写法是
Function uni(Chinese)
dim j,a
For j = 1 to Len (Chinese)
a=Mid(Chinese, j, 1)
uni= uni & "&#x" & Hex(Ascw(a)) & ";"
next
End Function
  相关解决方案