`
towne
  • 浏览: 38115 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论
  • mapeijie888: 谢谢 能不能把  此文相关的代码发至邮箱  mapeijie8 ...
    mock测试
  • towne: 如Calendar,Date等类型则需要用户自己实现Conve ...
    XStream
  • jinkingmanager: 讲的挺好,不过我有些问题想问一下: 1 如果一个XML中对应有 ...
    XStream
  • towne: 在web项目中测试servlet比较麻烦,像servletRe ...
    mock测试

贴一个自己写的json转xml 的HTTPServiceUtils对象

阅读更多
if (!this.HTTPServiceUtils) {
    HTTPServiceUtils = {    
    };
}
(function () {    
        var XMLHttpReq ={
        _objPool: [],//xmlhttp建立连接池      
        _getInstance:function (){
            for (var i = 0; i < this._objPool.length; i ++){
                if (this._objPool[i].readyState == 0 || this._objPool[i].readyState == 4){
                    return this._objPool[i];
                }
            }
            // IE5中不支持push方法
            this._objPool[this._objPool.length] = this._createObj();
            return this._objPool[this._objPool.length - 1];
        },
        _createObj: function (){
            if (window.XMLHttpRequest){
                var objXMLHttp = new XMLHttpRequest();
            }else{
                var MSXML = ['MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
                for(var n=0; n<MSXML.length; n++){
                    try{
                        var objXMLHttp = new ActiveXObject(MSXML[n]);
                        break;
                    }catch(e){}
                }
            }          
            // mozilla某些版本没有readyState属性
            if (objXMLHttp.readyState == null){
                objXMLHttp.readyState = 0;
                objXMLHttp.addEventListener("load", function (){
                    objXMLHttp.readyState = 4;
                    if(typeof objXMLHttp.onreadystatechange == "function"){objXMLHttp.onreadystatechange();}
                },  false);
            }
            return objXMLHttp;
        },
        // 发送请求(方法[post,get], 地址, 数据, 回调函数,数据模板)
        sendReq: function (method, url, data, callback,dataset){
            var objXMLHttp = this._getInstance();
            with(objXMLHttp){
                try{
                    open(method, url, true);
                    // 设定请求编码方式
                    setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
                    send(data);
                    onreadystatechange = function (){
                        if (objXMLHttp.readyState == 4 && (objXMLHttp.status == 200 || objXMLHttp.status == 304)){
                            callback(objXMLHttp,dataset);
                        }
                    }
                }catch(e){alert(e);}
            }
        }
      };  
      var DynamicFields;//MAP格式 DynamicFields.keys()所有的键 DynamicFields.values()所有的值
      var Datasetname;
      var Dataset;
      var _xml;
    //设置map字段
    function setMap(_dynamicfields){
            var map = new Map();//创建map对象
            var fields  = new Array();                   
            fields = fields.str2arr(_dynamicfields);
            for(var i in fields) {
                if(!isNaN(i)){
                    var xx = new  Array();
                    xx = fields[i].split(":");
                    map.put(xx[0],xx[1]);
                 }
             } 
            DynamicFields = map;
    }
    //数组对象的扩展增加一个字串转数组的方法
    Array.prototype.str2arr=function(string){
    var s;
    if(string.indexOf(";")!=-1) s=string.split(";");
    if(string.indexOf("^")!=-1) s=string.split("^");
    arr=this;
    for(i=0;i<s.length;i++){
        arr = arr.concat(s[i]);
      }
       return arr;
    }
    //清除数组内容
    Array.prototype.clear=function(){
    this.splice(0,this.length);
    }   
    // 回调函数jsonResponse
       function jsonResponse(originalRequest,_dataset) {
         var fields  = new Array();  
         fields = _dataset._fields.keys(); 
         var name = _dataset._name;
            var myobj = eval("(" + originalRequest.responseText + ")");
            _xml = JsonToXml(myobj,name,fields)    
            InitialDataset(_xml,_dataset);
        } 
      //json 到 xml 的转换  
        function JsonToXml(_jsonobj,_datasetname,_fields){
          var xml = "<xml id=\"__"+_datasetname+"\" style=\"display: none\">";  
              xml = xml +"<records  possibleCount=\"1\" pageCount=\"1\" loadedPages=\"1\">";
          var recNum=0;
          var itemCount = _jsonobj.itemCount;
          var fieldsCount = _fields.length;
          while(itemCount>0)
          {
              xml=xml+"<record id=\""+(recNum+1)+"\" pageIndex=\"1\" state=\"none\"><new>";
              xml=xml+"s";//选择框占位符 true 表示勾选框勾住
              for(var i=0;i<fieldsCount;i++){
                xml=xml+"^"+_jsonobj.list[recNum][_fields[i]];
              }
           xml= xml+"</new></record>";
           recNum++;
           itemCount--;
          }  
         xml = xml +"</records>";
         xml = xml +"</xml>";
         return xml;
    }  
    //初始化数据集
        function InitialDataset(_xml,_dataset)
        {
              var XMLDoc; 
              _dataset.clearData();  
           XMLDoc = new ActiveXObject("Msxml2.DOMDocument");
           XMLDoc.async = false;
           if (XMLDoc.loadXML(_xml))
           {
            $cq=XMLDoc.getElementsByTagName("xml/records")[0];
            _dataset.$8p($cq,true,null,null);
            return _dataset;
              }
           else
           {
            alert("初始化数据集错误!");
           }
        }                                  
    if(typeof HTTPServiceUtils.httpGet !== 'function'){
              HTTPServiceUtils.httpGet = function(url,dataset){
                     XMLHttpReq.sendReq("get",url,null,jsonResponse,dataset);      
              }
    }  
    if(typeof HTTPServiceUtils.httpPost !== 'function'){
              HTTPServiceUtils.httpPost = function(url,parameters,dataset){
                     XMLHttpReq.sendReq("post",url,parameters,jsonResponse,dataset);         
              }
    }
    //初始化表格
    if(typeof HTTPServiceUtils.initDataTable !== 'function'){
              HTTPServiceUtils.initDataTable = function(_datatable,_dataset){
                 _datatable.addColumn("select");
                 for(var i=0;i<_dataset._fields.size();i++){
                    var _f  = _datatable.addColumn(_dataset._fields.element(i).key);
                        _f.setField(_dataset._fields.element(i).key)
                        _f.setLabel(_dataset._fields.element(i).value)                
                 }// DynamicFields.keys()所有的键 DynamicFields.values()所有的值
              }
    }
    //通过模板取得一个数据集实例
    if(typeof HTTPServiceUtils.initDataset !== 'function'){
              HTTPServiceUtils.initDataset = function(_dynamicfields,_datasetname,_keyname){
                    Datasetname = _datasetname;
                    Dataset = BX.create("Dataset",null,_datasetname,"");                 
                    setMap(_dynamicfields);
                    Dataset._name = Datasetname;
                    Dataset._fields = DynamicFields;
                    Dataset._keyname = _keyname;
                    Dataset.addField("select","string");
                    for(var i=0;i<DynamicFields.size();i++){
                       var _f = Dataset.addField(DynamicFields.element(i).key,"string");
                       _f.setLabel(DynamicFields.element(i).value);
                       if(DynamicFields.elements[i].key == "key")
                       _f.setToolTip(DynamicFields.element(i).value);
                    }
                    return Dataset;                          
          }
    }       
})();

 

分享到:
评论

相关推荐

    js下xml转json和json转xml

    6. **返回XML字符串**:最后,组合所有的XML元素,形成一个完整的XML字符串。 ```javascript function jsonToXml(json) { // ...实现转换逻辑 } ``` 在实际开发中,往往会有现成的库,如`xml2json`和`json2xml`,...

    json和xml互转

    压缩包中的`xmlTojson`可能是一个简单的实现,用于将XML字符串转换为JSON对象。 在处理这两种格式时,需要考虑数据的兼容性、大小和解析效率。对于简单且不需要严格结构验证的场景,JSON通常是更好的选择;而在需要...

    json转xml插件工具

    - JQuery - jquery.json2xml.js - jquery.xml2json.js 2. XML 字符串转换成 JSON 对象 $.xml2json(str); 3. JSON 对象转换成 XML 字符串 $.json2xml(obj);

    json转对象 json转对象json转对象 json转对象 json转对象 json转对象

    json转对象json转对象json转对象json转对象json转对象json转对象json转对象json转对象json转对象json转对象json转对象json转对象json转对象json转对象json转对象json转对象json转对象json转对象json转对象json转对象...

    json自动转换成xml的json包

    例如,它可能包含一个名为`JsonToXmlConverter`的类,该类具有将JSON字符串或对象转化为XML字符串的方法。使用这个库,开发者无需手动编写转换代码,只需调用相应的API,即可完成转换任务,大大简化了开发流程。 在...

    C#写的Json与Xml互转支持.net framework2.0以上组件Newtonsoft.Json.dll

    提供JSON字符串和一个可选的根元素名称,该方法会返回一个`XmlDocument`对象。 ### 版本兼容性与注意事项 - Newtonsoft.Json.dll库支持.NET Framework 2.0及更高版本,因此在这些版本的项目中可以直接使用。 - 在...

    json转xml所需jar包

    这些库组合在一起,可以构成一个完整的解决方案,将JSON数据转换为XML格式。使用这些库的开发者可以构建自定义的转换器,根据需求定制JSON对象到XML元素的映射规则,或者利用已有的开源工具如json-lib提供的函数,...

    VB解析Json转换为Xml

    例如,如果Json对象中有数组,你可以使用循环遍历数组,然后为每个元素创建一个Xml元素。 总的来说,VB.NET提供了足够的工具来处理Json和Xml之间的转换。理解这两个数据格式的基本特性和转换方法,有助于在开发过程...

    C++结构体和json/xml之间互相转换

    在C++中将结构体转换为JSON或XML,我们需要定义一个映射规则,将结构体的每个成员对应到JSON或XML的键值。这通常涉及到反射(reflection)的概念,即程序能够自我检查其结构。由于C++标准库不直接支持反射,我们通常...

    java转换xml、list、map和json

    该方法首先创建了一个Document对象,然后添加一个node元素,接着遍历Map对象的keySet,生成key元素,并将其添加到node元素中。最后,使用doc2String方法将Document对象转换为xml字符串。 xml和list之间的转换 xml...

    java json xml转换

    // 假设有一个Person类 Person person = new Person("John", 30); // JAXB转XML JAXBContext jaxbContext = JAXBContext.newInstance(Person.class); String xml = jaxbContext.createMarshaller().marshal...

    xml转json包与教程

    这个压缩包“xml转json包与教程”提供了相关的类库和教程,帮助开发者完成这一任务。下面将详细介绍这个过程中的关键知识点: 1. **XML解析器**:在Java中,处理XML数据通常使用DOM(Document Object Model)、SAX...

    xml & json 转换工具

    3. **xstream-1.3.1.jar**:XStream是另一个Java库,它提供了一种简单的方式来序列化和反序列化Java对象为XML。在XML到JSON转换过程中,XStream可能首先用于将XML数据转换为Java对象,然后这些对象再由Json-lib处理...

    Json转对象忽略大小写

    在这个类中,开发者可能定义了一个方法,如`jsonToBean忽略大小写(String jsonString, Class&lt;T&gt; clazz)`,该方法接受一个JSON字符串和目标Java对象的Class类型,然后进行转换。 在Java中,使用Gson库进行JSON处理时...

    java的xml和json相互转换工具类,亲测直接用

    上述代码中,`xmlToJson`方法接收一个XML字符串,通过`XmlMapper`的`readTree`方法将其解析为JsonNode对象,然后利用`writeValueAsString`方法将JsonNode转换为JSON字符串。相反,`jsonToXml`方法则将JSON字符串解析...

    json和xml互转.jar

    "json和xml互转.jar"是一个Java应用程序,其主要功能是帮助开发者将JSON字符串转换为XML字符串,反之亦然。这个工具的特点是简单、方便、快捷,简化了开发过程中这两种数据格式之间的转换工作。 首先,让我们了解...

    jquery.json2xml.js和jquery.xml2json.js

    在JavaScript中,你可以通过创建一个JSON对象,然后调用这个插件的方法,将其转换成XML格式。这样可以方便地将JSON数据发送到服务器,或者在需要XML结构的环境中使用。 ```javascript var json = { "person": { ...

    xml转json json转xml java工程源码

    java工程源码实现xml和json的互转,工程已包含所jar包:commons-beanutils-1.7.0.jar、commons-collections-3.1.jar、commons-lang-2.5.jar、commons-logging.jar、ezmorph-1.0.3.jar、json-lib-2.4-jdk15.jar、xom-...

    01.JsonToXml.zip

    标题"01.JsonToXml.zip"暗示了这是一个关于Delphi编程的压缩包,其中包含的代码或工具专注于将JSON数据转换为XML格式,反之亦然。这在需要将JSON格式的数据用于不支持这种格式的应用程序,或者需要以更结构化的方式...

    java中json 转xml 的jar

    java中json 转xml 的jar

Global site tag (gtag.js) - Google Analytics