zoukankan      html  css  js  c++  java
  • xml特殊字符处理(js)

    本周使用cell表结合xmlhttp组件开发异步多行数据插入操作,遇到数据为&时发生xml解析错误

    Reflector和google后发现
    是由于特殊字符造成,需要进行处理:
    <转化成&lt;
    >转化成&gt;
    ‘转化成&apos;
    “转化成&quot;
    &转化成&amp;

    在W3C的技术规范中,也可以看到这样的字符不允许出现:
    http://www.w3.org/TR/2001/REC-xml-c14n-20010315

    于是找了一个javascript的htmlEncode函数:

            HTMLEncode = function( text )
        {
        
    if ( typeof( text ) != "string" )
           text 
    = text.toString() ;

        text 
    = text.replace(
           
    /&/g, "&amp;").replace(
           
    /"/g, "&quot;").replace(
           /</g, 
    "&lt;").replace(
           />/g, 
    "&gt;") ;

        return text ;
        }

    问题解决,使用时:
    前台js拼凑xml string:
            function GetString(iRow)
            {
                    s1 
    = HTMLEncode(form1.DCellWeb1.GetCellString(2,iCurrentRow,0)); 
                     s2 
    = HTMLEncode(form1.DCellWeb1.GetCellString(3,iCurrentRow,0));
                     s3 
    = HTMLEncode(form1.DCellWeb1.GetCellString(4,iCurrentRow,0));
                     s4 
    = HTMLEncode(form1.DCellWeb1.GetCellString(5,iCurrentRow,0));
               
                
    return "<xml version='1.0' encoding='GB2312'><data>"+
                
    "<s1>"+s1+"</s1>" +
                
    "<s2>"+s2+"</s2>" +
                
    "<s3>"+s3+"</s3>" +      
                
    "<s4>"+s4+"</s4>" +                
                
    "</data></xml>"   
            }

    后台c#解析:
    string sProjCode, sProjName, sUnitName, sManager, sDirectionCode;

            System.Xml.XmlDocument xDoc 
    = new System.Xml.XmlDocument();
            xDoc.Load(Request.InputStream);

            sProjCode 
    = HttpUtility.HtmlDecode(xDoc.GetElementsByTagName("s1")[0].InnerText.Trim());
            sProjName 
    = HttpUtility.HtmlDecode(xDoc.GetElementsByTagName("s2")[0].InnerText.Trim());
            sUnitName 
    = HttpUtility.HtmlDecode(xDoc.GetElementsByTagName("s3")[0].InnerText.Trim());
            sManager 
    = HttpUtility.HtmlDecode(xDoc.GetElementsByTagName("s4")[0].InnerText.Trim());

  • 相关阅读:
    Typora的使用-规整笔记 让我以后的笔记内容更加整齐
    2019.11.8
    Java笔记1: 输入输出与变量常量
    2019.11.5 规整博客;整理分类;分章节发表博客
    2019.11.4 准备房子/研究汉诺塔问题和递归改变自我思维
    2013年小结
    legoblock秀上限
    阶段总结合计划
    《人月神话》读后感
    《JavaScript语言精髓与编程实践》读书笔记二
  • 原文地址:https://www.cnblogs.com/calmzeal/p/882352.html
Copyright © 2011-2022 走看看