Javascript操作xml

来源:互联网 发布:大麦盒子 网络未连接 编辑:程序博客网 时间:2024/05/27 20:26

 

         B/S系统中经常需要在客户端和服务器端之间交互数据,这些数据一般都是在客户端由Javscript组织然后发回服务器。对于一些复杂的数据我们一般用xml的格式组织。本文将给出javascriptxml的一些基本操作。
        javascript中是利用MSXml2组件对xml进行操作。该组件将xml加载到内存中形成一个树状的数据结构,可以利用XPath语言对其进行查询。
         首先需要创建一个MSxml2.DOMDocument的对象,如下:
var xmlDoc = new ActiveXObject("MSxml2.DOMDocument");,如果是ie5以上版本可以这样:CreateObject(“Microsoft.XMLDom);
创建了dom对象以后就可以用它加载一个xml文件或一段xml字符串,如下:
 var strFilePath = “file.xml”;
 xmlDoc.load(strFilePath);//加载xml文件
 var strXml = “<?xml,version=1.0?><root><node text=”Name”/></root>”;
 xmlDoc.loadXml(strXml);//加载xml字符串
当然还可以创建一个空的DOCDocument,然后向里面填写内容。
首先要创建xml的头(<?xml,version=’1.0’?>),如下:
 var = xmlDoc.createProcessingInstruction("xml","version='1.0'");
xmlDoc.appendChild(head);
接下来为xml创建节点,如下:
var rootNode = xmlDoc.createNode("1","Hello","");
//参数1-节点类型;参数2-节点名称;参数3-节点的命名空间
为节点创建属性,
       var attribut = xmlDoc.createAttribute("Name");//参数-属性名称
       Attribute.value = “programer”;//为属性赋值
       rootNode.setAttributeNode(attribut);//将属性附加到节点上
为节点添加文本值,
   rootNode.value = “Who am I”;
可以直接创建一个文本节点作为当前节点的子节点
 rootNode.appendChild(xmlDoc.createTextNode(“Who am I”));
将节点添加到DOCDocument
   xmlDoc.appendChild(rootNode);
 
 
当然还可以为一个节点创建子节点,如下
   rootNode.appendChild(xnChileNode);
 
 
利用XPath查找节点,也可以查找节点集
   Var myNode = xmlDoc.selectSingleNode(“//Hello/Node[@Text=’Who’]”);
//查找目标的根节点的节点名为Hello,这条语句查询的是Hello节点下的节点名为Node的节点中Text属性
//等于”Who”的节点
Var myNodeList = xmlDoc.selectNodes(“//Hello/Node);
 //查询Hello节点下的全部Node节点
 
删除节点,删除时只能删除某一个节点下的子节点,而不能直接删除孙节点。
    Var myNode = xmlDoc.selectSingleNode(“//Hello/Node[@Text=’Who’]”);
     Var helloNode = xmlDoc.selectSingleNode(“//Hello”);
     xmlDoc.removeChild(myNode);//错误
     xmlDoc.removeChild(helloNode);//正确
     helloNode.removeChild(myNode);//正确
 
保存结果。可以将xmlDoc中的内容保存到文件中,也可以直接获取它的xml字符串,如下:
   xmlDoc.save(strFilePath);//保存到文件
   alert(xmlDoc.xml);//输出xml字符串
原创粉丝点击