JQuery 如何增删改 XML

JQuery 如何增删改 XML,第1张

1.通过jquery的$.ajax()请求该xml资源,里面参数dataType:xml,如此,即可在本地js代码上遍历此xml文档。把文件显示于页面。做了修改,删除 *** 作后,把数据用JSON方式传递到后台,进行文件读写 *** 作。

$.ajax({

  url : rootPath + "/xml.php?act=read",

  dataType : "json",

  success : function(response) {

   if (response) {

     alert("保存成功")

   }

    else

     alert("保存失败" )

   }

  }

 })

xml文件\内容读取

1、读取xml文件

$.get("xmlfile.xml",function(xml){

        //xml即为可以读取使用的内容,具体读取见第2点

    })

2、读取xml内容

如果读取的xml是来于xml文件,这结合上面的那点,处理如下

$.get("xmlfile.xml",function(xml){    

        $(xml).find("item").length    

    })

如果读取的是xml字符串,则要注意一点,xml字符串的必然被”<xml>”和”</xml>”包围才可以被解析

$("<xml><root><item></item></root></xml>").find("item").length 二、解析xml内容示例xml:<?xml version="1.0" encoding="utf-8" ?><fields>

  <field Name="Name1">

    <fieldname>dsname</fieldname>

    <datatype>字符</datatype>

  </field>

  <field Name="Name2">

    <fieldname>dstype</fieldname>

    <datatype>字符</datatype>

  </field></fields>以下是解析示例代码$(xml).find("field").each(function() {

       var field = $(this)

 var fName = field.attr("Name")//读取节点属性

 var dataType = field.find("datatype").text()//读取子节点的值

})

另外说明一点js是没有权限去直接 *** 作本地或者服务器的xml文件的,要通过 ActiveX来实现,这个涉及到浏览器安全的。

JavaScript *** 作 XML 需要使用 XML DOM,它和 HTML DOM 很相似。

为什么 innerHTML 等 HTML DOM 属性、方法不能 *** 作 XML?原因很简单,就像 HTML 是 XML 的特殊实例一样,HTML DOM 也是专门优化过的,有的 *** 作只能专用于 HTML。

而  XML DOM 则对于任何 XML 及其子集语言编写的文件都通用,因此它的 *** 作更加原始,步骤也比较复杂。下面举一个例子说明。

假设需要处理的 XML 文件是“example.xml”。

<?xml version="1.0" encoding="UTF-8"?>

<school id="s0">

 <grade id="g0" number="1">

  <!--在这里插入子节点-->

 </grade>

 <grade id="g1" number="2"></grade>

 <grade id="g2" number="3"></grade>

</school>

现在为“<grade id="g0" number="1"></grade>”节点插入一个子节点“<class>Class 101</class>”。注意在 XML 中,“Class 101”这样的单纯文字内容也被视为节点,即文本节点。

下面是 JavaScript 代码(宿主环境为浏览器,因此需要把代码放在一个 HTML 文件中执行)。

//加载 XML 文档的函数(这个函数的具体实现可以忽略)

function loadXMLDoc(xmlFile){

    var xmlDoc

    try{

        //Internet Explorer 可以使用其原生方法加载 XML

        xmlDoc=new ActiveXObject("Microsoft.XMLDOM")

    }catch(e){

        try{

            //Firefox 也有标准方法,但可能造成其他浏览器报错,故省略

            //使用 XMLHttpRequest 替代,适用于大部分浏览器

            var xmlHttp = new XMLHttpRequest() 

            xmlHttp.open("GET",xmlFile,false) 

            xmlHttp.send(null)  

            return xmlHttp.responseXML

        }catch(e){

            return null

        }

    }

    xmlDoc.async=false

    xmlDoc.load(xmlFile)

    return xmlDoc

}

var xml=loadXMLDoc("example.xml") //加载XML文件

var elemC0=xml.createElement("class") //创建一个元素节点

var text0=xml.createTextNode("Class 101") //创建一个文本节点

elemC0.appendChild(text0) //添加文本节点

var elemG0=xml.getElementsByTagName("grade")[0] //获取需插入的父节点

elemG0.appendChild(elemC0) //添加为子节点


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11245322.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存