Js+XML字符串 操作并转成json格式字符串

来源:互联网 发布:601519历史交易数据 编辑:程序博客网 时间:2024/04/20 12:17

<%@ page language="java" contentType="text/html; charset=UTF-8"
 pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<c:set var="ctx" value="${pageContext.request.contextPath}" />
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>信息检搜索</title>
<script src="${ctx}/script/jquery/jquery-1.3.2.min.js" type="text/javascript"></script>
<link href="${ctx}/script/ligerUI_V1.2.0/skins/Aqua/css/ligerui-all.css" rel="stylesheet" type="text/css" />
<script src="${ctx}/script/ligerUI_V1.2.0/js/core/base.js" type="text/javascript"></script>
<script src="${ctx}/script/ligerUI_V1.2.0/js/plugins/ligerGrid.js" type="text/javascript"></script> 
<script src="${ctx}/script/ligerUI_V1.2.0/CustomersData.js" type="text/javascript"></script>
<script src="${ctx}/script/json.js" type="text/javascript"></script>

</head>
    <script type="text/javascript">
   
    $(function () {
     var htmlStr=$("#resultId").val();
     var htmlStr=xmlToJson(htmlStr);
      var jsonobj=eval(htmlStr);
     var obj={Rows:jsonobj,Total:jsonobj.length};
        $("#maingrid4").ligerGrid({
            checkbox: true,
            columns: [
            { display: '数据源', name: 'tableName', align: 'left', width: 120 },
            { display: '数据', name: 'results', minWidth: 60 }
            ],
            pageSize:30,
            data:obj,//CustomersData,
            width: '100%',height:'97%'
        });


        $("#pageloading").hide();
    });
    </script>

<body style="padding:6px; overflow:hidden;">
关键词:${keyWords }
<br/>

<script  type="text/javascript">
loadXML = function(xmlString){
    var xmlDoc=null;
    //判断浏览器的类型
    //支持IE浏览器
    if(!window.DOMParser && window.ActiveXObject){   //window.DOMParser 判断是否是非ie浏览器
        var xmlDomVersions = ['MSXML.2.DOMDocument.6.0','MSXML.2.DOMDocument.3.0','Microsoft.XMLDOM'];
        for(var i=0;i<xmlDomVersions.length;i++){
            try{
                xmlDoc = new ActiveXObject(xmlDomVersions[i]);
                xmlDoc.async = false;
                xmlDoc.loadXML(xmlString); //loadXML方法载入xml字符串
                break;
            }catch(e){
            }
        }
    }
    //支持Mozilla浏览器
    else if(window.DOMParser && document.implementation && document.implementation.createDocument){
        try{
            /* DOMParser 对象解析 XML 文本并返回一个 XML Document 对象。
             * 要使用 DOMParser,使用不带参数的构造函数来实例化它,然后调用其 parseFromString() 方法
             * parseFromString(text, contentType) 参数text:要解析的 XML 标记 参数contentType文本的内容类型
             * 可能是 "text/xml" 、"application/xml" 或 "application/xhtml+xml" 中的一个。注意,不支持 "text/html"。
             */
            domParser = new  DOMParser();
            xmlDoc = domParser.parseFromString(xmlString, 'text/xml');
        }catch(e){
        }
    }
    else{
        return null;
    }

    return xmlDoc;
}

function xmlToJson(xmlStr)
{
 var xmldoc=loadXML(xmlStr);
 var jsonStr="{Rows:[{\"Country\":\"Spain\",\"Phone\":\"(95) 555 82 82\"},{\"Country\":\"Spain\",\"Phone\":\"(95) 555 82 82\"}],Total:91};";
     jsonStr="";
    var eTable = xmldoc.getElementsByTagName("Table");
    for (var i = 0; i < eTable.length; i++) {
         var eResult = eTable[i].getElementsByTagName("Result");
         var tableName = eTable[i].getAttribute("name");
         for(var j=0;j<eResult.length;j++)
           {
         var results=eResult[j].firstChild.nodeValue;
       var htmls="{\"tableName\":\""+tableName+"\",\"results\":\""+results+"\"},";
   jsonStr+=htmls;
        }
        }
  if(jsonStr.length>0)
  {
   jsonStr=jsonStr.substr(0,jsonStr.length-1);
   }
  //jsonStr="'{Rows:["+jsonStr+"],Total:"+counts+"};'";
  jsonStr="["+jsonStr+"]";
  //alert(jsonStr);
  return jsonStr;
 }
 
function test()
{
 var html=$("#resultId").val();
     html=xmlToJson(html);
 $("#resultId").val(html);
 var obj = JSON.parse(html);
 for(var p in obj){//遍历json对象的每个key/value对,p为key
     alert(p + " | " + obj[p]);
  }
 }
</script>
<textarea name="resultId" id="resultId" rows="10" cols="50">
<Results>  //根标签
  <Table name="eeee">  //每一个资源对应一个 Table 标签
    <Result>aaaa</Result> //每一条记录对应一个Result 标签
    <Result>bbb</Result> //每一条记录对应一个Result 标签
    <Result>ccc</Result> //每一条记录对应一个Result 标签
    <Result>ddd</Result> //每一条记录对应一个Result 标签
    <Result>ddd</Result> //每一条记录对应一个Result 标签  
    <Result>aaaa</Result> //每一条记录对应一个Result 标签
    <Result>bbb</Result> //每一条记录对应一个Result 标签
    <Result>ccc</Result> //每一条记录对应一个Result 标签
    <Result>ddd</Result> //每一条记录对应一个Result 标签
    <Result>ddd</Result> //每一条记录对应一个Result 标签
  </Table>
    <Table name="qqqqq">  //每一个资源对应一个 Table 标签
    <Result>aaaa</Result> //每一条记录对应一个Result 标签
    <Result>bbb</Result> //每一条记录对应一个Result 标签
    <Result>ccc</Result> //每一条记录对应一个Result 标签
    <Result>ddd</Result> //每一条记录对应一个Result 标签
    <Result>ddd</Result> //每一条记录对应一个Result 标签  
    <Result>aaaa</Result> //每一条记录对应一个Result 标签
    <Result>bbb</Result> //每一条记录对应一个Result 标签
    <Result>ccc</Result> //每一条记录对应一个Result 标签
    <Result>ddd</Result> //每一条记录对应一个Result 标签
    <Result>ddd</Result> //每一条记录对应一个Result 标签
  </Table>
    <Table name="wwww">  //每一个资源对应一个 Table 标签
    <Result>aaaa</Result> //每一条记录对应一个Result 标签
    <Result>bbb</Result> //每一条记录对应一个Result 标签
    <Result>ccc</Result> //每一条记录对应一个Result 标签
    <Result>ddd</Result> //每一条记录对应一个Result 标签
    <Result>ddd</Result> //每一条记录对应一个Result 标签  
    <Result>aaaa</Result> //每一条记录对应一个Result 标签
    <Result>bbb</Result> //每一条记录对应一个Result 标签
    <Result>ccc</Result> //每一条记录对应一个Result 标签
    <Result>ddd</Result> //每一条记录对应一个Result 标签
    <Result>ddd</Result> //每一条记录对应一个Result 标签
  </Table>
</Results>
</textarea>
<input type="button" value="提交" onclick="test();">
<div id="message" style="width:800px"></div>
<div class="l-loading" style="display:block" id="pageloading"></div>
  <form>
    <div id="maingrid4" style="margin:0; padding:0"></div>
  </form>


  <div style="display:none;">
 
</div>
 
</body>

</html>

 

原创粉丝点击