• 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());

  • 相关阅读:
    嵌入式开发之基于模型的设计思想
    tslib库的移植以及"selected device is not a touchscreen I understand"问题解决
    rocketMq broker.conf全部参数解释
    rocketMq 消息偏移量 Offset
    3、验证,数据绑定和类型转换
    2、springframe Resources
    1、Spring Framework 5.0简述
    POI导出Excel时下拉列表值超过255的问题(String literals in formulas can't be bigger than 255 characters ASCII)
    rocketMq console MQClientException异常
    25. Secure Object Implementations(安全对象实现)
  • 原文地址:https://www.cnblogs.com/calmzeal/p/882352.html
Copyright © 2020-2023  润新知