js读取xml的实例讲解

发布时间:2020-05-11编辑:脚本学堂
js读取xml的实例讲解

先上一段代码:
<script language=javascript>
var str = "<input>11112345</input>";
var doc = new xml( str );
alert(doc);

//创建一个dom对象
function xml(str){
if(window.DOMParser)//firefox内核的浏览器
{
var p = new DOMParser();
return p.parseFromString( str, "text/xml" );
}
else if( window.ActiveXObject )//ie内核的浏览器
{
var doc = new ActiveXObject( "Msxml2.DOMDocument" );
doc.loadXML(str);
return doc;
}
else
return false;
}
</script>
........................
if(!!document.all)
{
alert('当前浏览器为IE,IE兼容');
}
else
{
alert('当前浏览器为FireFox,FireFox兼容');
}

一般情况下,将数据放到一个节点的属性上,这样最容易操作,

例如xml格式为:
<photo attr1="1" attr2="2"></photo>
如果得到photo节点后,可以如下操作:
node.getAttribute(''attr1'');
这样可以得到属性的值。

第二种情况,如果是放入的节点之间,比如:
<photo>这是我的照片</photo>
这样可以用node.firstChild.data来获取数据,其中photo之间的内容被看作一个文本节点,因此必须用firstChild首先得到这个节点后,然后取其data信息。

第三种情况,如果信息包含一个html或者其他xml无法直接认识的内容,可以将其放入cdata中,这样js也可以很容易处理,跟第二种情况一样:xml代码如下:
<photo><![CDATA[<a href="这是我的照片的连接">这是我的照片</a>]]></photo>

<script language="JavaScript">
<!--
var doc = new ActiveXObject("Msxml2.DOMDocument"); //ie5.5+,CreateObject("Microsoft.XMLDOM")
doc.loadXML('<?xml version="1.0"?><students><name id="test"><firstname>王</firstname></name></students>');

var newnode = doc.createNode(1,"name","");
   var r = doc.createAttribute("id");    //创建属性
        r.value="test2";
        newnode.setAttributeNode(r); //添加属性
       var newelement=doc.createElement("sex");//创建元素
var r1 = doc.createAttribute("id");    //创建属性
r1.value="test2";
newelement.setAttributeNode(r1)
newnode.appendChild(newelement)
doc.lastChild.appendChild(newnode)
   alert(doc.xml)//添加一个子节点后的xml
currNode=doc.documentElement.childNodes.item(0);//
doc.documentElement.removeChild(currNode)//删除节点
alert(doc.xml)//删除后的xml
//-->
</script>
<script language="JavaScript">
<!--
var doc = new ActiveXObject("Msxml2.DOMDocument"); //ie5.5+,CreateObject("Microsoft.XMLDOM")
//加载文档
//doc.load("b.xml");
//创建文件头
var p = doc.createProcessingInstruction("xml","version='1.0' encoding='gb2312'");
//添加文件头
doc.appendChild(p);
//用于直接加载时获得根接点
//var root = doc.documentElement;
//两种方式创建根接点
//    var root = doc.createElement("students");
    var root = doc.createNode(1,"students","");
    //创建子接点
    var n = doc.createNode(1,"ttyp","");
   //指定子接点文本
   //n.text = " this is a test";
   //创建孙接点
    var o = doc.createElement("sex");
    o.text = "男";    //指定其文本
    //创建属性
    var r = doc.createAttribute("id");
        r.value="test";
        //添加属性
        n.setAttributeNode(r);
    //创建第二个属性   
    var r1 = doc.createAttribute("class");
        r1.value="tt";
        //添加属性
        n.setAttributeNode(r1);
        //删除第二个属性
        n.removeAttribute("class");
        //添加孙接点
        n.appendChild(o);
        //添加文本接点

 1/6    1 2 3 4 5 6 下一页 尾页