jQuery加载及解析XML文件的艺术实例深入分析

正文实例讲述了jQuery读取XML文件的点子。分享给大家供大家参照他事他说加以侦察,具体如下:

正文实例讲述了jQuery创设及操作xml格式数据。分享给大家供大家参考,具体如下:

正文实例讲述了jQuery完成遍历XML节点和脾性的措施。分享给大家供大家参照他事他说加以考察,具体如下:

正文实例讲述了jQuery加载及解析XML文件的主意。分享给大家供我们参谋,具体如下:

<?xml version="1.0" encoding="utf-8" ?>
 <taxrates>
 <taxrate id="1">
  <lower>0</lower>
  <upper>500</upper>
  <rate>5</rate>
  <buckle>0</buckle>
 </taxrate>
 <taxrate id="2">
  <lower>500</lower>
  <upper>2000</upper>
  <rate>10</rate>
  <buckle>25</buckle>
 </taxrate>
 <taxrate id="3">
  <lower>2000</lower>
  <upper>5000</upper>
  <rate>15</rate>
  <buckle>125</buckle>
 </taxrate>
 <taxrate id="4">
  <lower>5000</lower>
  <upper>20000</upper>
  <rate>20</rate>
  <buckle>375</buckle>
 </taxrate>
 <taxrate id="5">
  <lower>20000</lower>
  <upper>40000</upper>
  <rate>25</rate>
  <buckle>1375</buckle>
 </taxrate>
 <taxrate id="6">
  <lower>40000</lower>
  <upper>60000</upper>
  <rate>30</rate>
  <buckle>3375</buckle>
 </taxrate>
 <taxrate id="7">
  <lower>60000</lower>
  <upper>80000</upper>
  <rate>35</rate>
  <buckle>6375</buckle>
 </taxrate>
 <taxrate id="8">
  <lower>80000</lower>
  <upper>100000</upper>
  <rate>40</rate>
  <buckle>10375</buckle>
 </taxrate>
 <taxrate id="9">
  <lower>100000</lower>
  <upper>99999999</upper>
  <rate>45</rate>
  <buckle>15375</buckle>
 </taxrate>
</taxrates>


function StandardTaxRate()
{
  $.ajax({
    url: "/Resource/salaryTaxRate.xml",
    dataType: 'xml',
    type: 'GET',
    timeout: 2000,
    error: function(xml)
    {
      alert("加载XML 文件出错!");
    },
    success: function(xml)
    {
      $(xml).find("taxrate").each(function(i)
      {
        var oid = $(this).attr("id");
        var lower = $(this).children("lower").text();
        var upper = $(this).children("upper").text();
        var rate = $(this).children("rate").text();
        var buckle = $(this).children("buckle").text();
        ///后续操作。。。
      });
    }
  });
}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jQuery创建及操作xml</title>
</head>
<body>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script>
$(function(){
  var xmlDom=$($.parseXml("<?xml version=\"1.0\" encoding=\"utf-8\" ?><root><person></person></root>"));
  xmlDom.find("root").appendXml("<content/>").text("测试");
  xmlDom.find("content").beforeXml("<test/>");
  alert(xmlDom.xml());
});
(function($) {
    function mnpXml(opCode, xmlStr) {
      return this.each(function() {
        if (typeof xmlStr != "string") return;
        if (!jQuery.isXMLDoc(this)) return;
        var node = $.parseXml(xmlStr).firstChild.cloneNode(true);
        switch (opCode) {
          case "append":
            this.appendChild(node);
            break;
          case "prepend":
            if (this.childNodes.length > 0)
              this.insertBefore(node, this.firstChild);
            else
              this.appendChild(node);
            break;
          case "after":
            if (this.nextSibling)
              this.parentNode.insertBefore(node, this.nextSibling);
            else
              this.parentNode.appendChild(node);
            break;
          case "before":
            this.parentNode.insertBefore(node, this);
            break;
        }
      });
    }
    $.fn.extend({
      appendXml: function(s) {
        return mnpXml.call(this, "append", s);
      },
      prependXml: function(s) {
        return mnpXml.call(this, "prepend", s);
      },
      afterXml: function(s) {
        return mnpXml.call(this, "after", s);
      },
      beforeXml: function(s) {
        return mnpXml.call(this, "before", s);
      },
      xml: function() {
        var elem = this[0];
        return elem.xml || (new XMLSerializer()).serializeToString(elem) ;
      },
      innerXml: function() {
        var s = this.xml();
        var i = s.indexOf(">"), j = s.lastIndexOf("<");
        if (j > i)
          return s.substring(i + 1, j);
        else
          return "";
      }
    });
    $.extend(jQuery, {
      parseXml: function(xmlStr) {
        if (window.ActiveXObject) {
          var xd = new ActiveXObject("Microsoft.XMLDOM");
          xd.async = false;
          xd.loadXML(xmlStr);
          return xd;
        }
        else if (typeof DOMParser != "undefined") {
          var xd = new DOMParser().parseFromString(xmlStr, "text/xml");
          return xd;
        }
        else return null;
      },
      toXml: function(obj, nodeName, useAttr) {
        var x = $($.parseXml("<" + nodeName + " />"));
        var n = x.find(":first");
        for (var p in obj) {
          if (useAttr)
            n.attr(p, obj[p]);
          else
            n.appendXml("<" + p + " />").find(p).text(obj[p]);
        }
        return x[0];
      }
    });
  })(jQuery);
</script>
</body>
</html>

用jquery遍历xml网络一度有许多, 不过看了多数稿子,
对于不内定属性名称的遍历方法却从未

1、简述

PS:这里再为我们提供三款有关xml操作相关在线工具供我们参考运用:

运作结果:

研究了一晃, 好像jquery未有attributes. 依旧要依靠原生态的JS

XML(eXtensible 马克up
Language)就能够扩大标志语言,与HTML同样,都以属于S青霉素L规范通用语言。

在线XML/JSON相互调换工具:

澳门新萄京8522 1

以下是JS代码

2、 Content-Type

澳门新萄京8522,在线格式化XML/在线压缩XML:

PS:这里再为大家提供三款有关xml操作相关在线工具供大家参考运用:

<script type="text/javascript" src="js/jquery.min.js"></script>
<div id="c"></div>
<script>
//用于缩进, 根据节点级别
var M_DOT = 1;
//递归函数, 用于遍历XML, 同时打印出来
function fn(obj){
  //定义一个变量, 用于缩进
  var dotString = "";
  //根据缩进量, 得到缩进的长度
  for(j = 1; j <= M_DOT; j++){
    dotString += "    ";
  }
  //jquery不支持attributes属性集, 转为原生js, 并赋给myObj变量
  var myObj = obj[0].attributes;
  //打印缩进
  $("#c").append(dotString)
  //打印属性集nodeName, nodeValue为原生JS, 分别表示为属性的名称, 和属性值
  $(myObj).each(function(i){
    $("#c").append( ($(this)[0].nodeName) + "=<u>" + ($(this)[0].nodeValue) + "</u> " );
  })
  //打印节点的文本
  //$("#c").append( "<b>" + obj.text() + "</b><br/>");
  //打印换行
  $("#c").append( "<br/>");
  //判断DOM有无子DOM
  if( obj.length > 0 ){
    //如果有, 遍历之
    obj.children().each(function(i){
      //缩进量加一
      M_DOT++;
      //递归遍历子DOM
      fn($(this));
      //缩进量加一
      M_DOT--;
    })
  }else{
    //如果没有子DOM, 返回false
    return false;
  }
}
//程序入口
$(document).ready(function() {
  //ajax获取xml数据, 详细用法见jquery手册
  $.get('config.xml', function(d){
    //len = $(d).find("*").length;
    //找到xml顶级结点. ('*:first'):就是查找第一个DOM. 详细说明见jquery手册
    //find, children(), each, 以及后面用到的 append 等请查阅jquery手册
    $(d).find('*:first').children().each(function(i){
      //找到顶级结点的子结点, 并把子结点对象传给fn函数
      fn($(this));
    });
  });
});
</script>

有的是状态下XML文件不能够健康分析都以出于Content-Type未有安装好。如若Content-Type本身正是三个XML文件则无需设置;要是是由后台程序动态变化的,那么就要求设置Content-Type为“text/xml”,不然jQuery会以暗中同意的“text/html”格局处理,导致分析失利。以下是二种常见语言中安装Content-Type的办法。

XML**在线压缩/格式化学工业具:
**

在线XML/JSON相互转变工具:

附一个XML文件

header(“Content-Type:text/xml”);    
//PHP
response.ContentType = “text/xml”;   //ASP
response.setContentType(“text/xm”);  //JSP

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图