最新更新 sitemap 网站制作设计本站搜索
网页设计
国外网站 韩国网站 个人主页 手提袋设计 CSS 网页特效 平面设计 网站设计 Flash CMS技巧 服装网站 php教程 photoshop 画册 服务器选用 数据库 Office
虚拟主机 域名注册 云主机 网页设计 客服QQ:8208442

WEBJX收集整理XML节点相关知识-XML/XSLT

日期:06-10    来源:中国设计秀    作者:cnwebshow.com

 mw5中国设计秀

第一、第一个子节点 firstChild属性:mw5中国设计秀
下面这个示例演示firstChild属性的使用mw5中国设计秀

mw5中国设计秀
var myXML:XML = new XML();mw5中国设计秀
var myTextArea:mx.controls.TextArea;mw5中国设计秀
myXML.ignoreWhite=true;mw5中国设计秀
myXML.onLoad=function(success:Boolean):Void{mw5中国设计秀
    if(success){mw5中国设计秀
        myTextArea.text+=this;mw5中国设计秀
        myTextArea.text+="nn----firstChild----nn";mw5中国设计秀
        myTextArea.text+=this.firstChild;mw5中国设计秀
        myTextArea.text+="nn-firstChild.firstChild-nn";mw5中国设计秀
        myTextArea.text+=this.firstChild.firstChild;mw5中国设计秀
    }else{mw5中国设计秀
        myTextArea.text="error";mw5中国设计秀
    }mw5中国设计秀
}mw5中国设计秀
myXML.load("goods.xml");mw5中国设计秀
mw5中国设计秀
------------------------------------------------------------------------------------------mw5中国设计秀
mw5中国设计秀
第二、最后一个节点 lastChild属性 mw5中国设计秀
var myXML:XML = new XML();mw5中国设计秀
var myTextArea:mx.controls.TextArea;mw5中国设计秀
myXML.ignoreWhite=true;mw5中国设计秀
myXML.onLoad=function(success:Boolean):Void{mw5中国设计秀
    if(success){mw5中国设计秀
        myTextArea.text+=this;mw5中国设计秀
        myTextArea.text+="nn----lastChild----nn";mw5中国设计秀
        myTextArea.text+=this.lastChild;mw5中国设计秀
        myTextArea.text+="nn-lastChild.lastChild-nn";mw5中国设计秀
        myTextArea.text+=this.lastChild.lastChild;mw5中国设计秀
    }else{mw5中国设计秀
        myTextArea.text="error";mw5中国设计秀
    }mw5中国设计秀
}mw5中国设计秀
myXML.load("goods.xml");mw5中国设计秀
mw5中国设计秀
---------------------------------------------------------------------------------------------------mw5中国设计秀
mw5中国设计秀
第三、兄弟节点 nextSibling 属性 mw5中国设计秀
mw5中国设计秀
/* 思路:mw5中国设计秀
先定位到XML文件下的第一个“钢笔”节点,再继续寻找其他兄弟节点。mw5中国设计秀
*/mw5中国设计秀
var myXML:XML = new XML();mw5中国设计秀
myXML.ignoreWhite = true;mw5中国设计秀
var myTextArea:mx.controls.TextArea;mw5中国设计秀
myXML.onLoad = function(success:Boolean):Void  {mw5中国设计秀
    if (success) {mw5中国设计秀
        //定位,用变量firstNode这个名称表示 myXML的第一个子节点,也就是首个"钢笔"节点mw5中国设计秀
        var firstNode = this.firstChild.firstChild;mw5中国设计秀
        //显示这个钢笔节点mw5中国设计秀
        myTextArea.text += firstNode;mw5中国设计秀
        //分隔符mw5中国设计秀
        myTextArea.text += "nn-------1----nextSibling--------------n";mw5中国设计秀
        myTextArea.text += firstNode.nextSibling;mw5中国设计秀
        myTextArea.text += "nn--------2---nextSibling.nextSibling--------------n";mw5中国设计秀
        myTextArea.text += firstNode.nextSibling.nextSibling;mw5中国设计秀
        myTextArea.text += "nn--------3---nextSibling.nextSibling.nextSibling--------------n";mw5中国设计秀
        myTextArea.text += firstNode.nextSibling.nextSibling.nextSibling;mw5中国设计秀
        myTextArea.text += "nn--------4---nextSibling.nextSibling.nextSibling--------------n";mw5中国设计秀
        myTextArea.text += firstNode.nextSibling.nextSibling.nextSibling.nextSibling;mw5中国设计秀
    } else {mw5中国设计秀
        myTextArea.text = "error";mw5中国设计秀
    }mw5中国设计秀
};mw5中国设计秀
myXML.load("goods.xml");mw5中国设计秀
mw5中国设计秀
 mw5中国设计秀

mw5中国设计秀
--------------------------------------------------------------------------------------------mw5中国设计秀
mw5中国设计秀
第四、另一个兄弟节点 previousSiblingmw5中国设计秀
可以说previousSibling 是nextSibling的逆过程。只要把nextSibling弄懂。previousSibling就不是难题了。mw5中国设计秀
mw5中国设计秀
mw5中国设计秀
var myXML:XML = new XML();mw5中国设计秀
var myTextArea:mx.controls.TextArea;mw5中国设计秀
myXML.ignoreWhite = true;mw5中国设计秀
myXML.onLoad = function(success:Boolean):Void  {mw5中国设计秀
    if (success) {mw5中国设计秀
        var lastNode = this.firstChild.lastChild;mw5中国设计秀
        myTextArea.text += lastNode; //定位金额mw5中国设计秀
        myTextArea.text += "nn----previousSibling----n";mw5中国设计秀
        myTextArea.text += lastNode.previousSibling;mw5中国设计秀
        myTextArea.text += "nn-previousSibling.previousSibling-n";mw5中国设计秀
        myTextArea.text += lastNode.previousSibling.previousSibling;mw5中国设计秀
        myTextArea.text += "nn-previousSibling * 3-n";mw5中国设计秀
        myTextArea.text += lastNode.previousSibling.previousSibling.previousSibling;mw5中国设计秀
        myTextArea.text += "nn-previousSibling * 4-n";mw5中国设计秀
        myTextArea.text += lastNode.previousSibling.previousSibling.previousSibling.previousSibling;mw5中国设计秀
    } else {mw5中国设计秀
        myTextArea.text = "error";mw5中国设计秀
    }mw5中国设计秀
};mw5中国设计秀
myXML.load("goods.xml");mw5中国设计秀
 mw5中国设计秀

mw5中国设计秀
mw5中国设计秀
----------------------------------------------------------------------------------------------mw5中国设计秀
mw5中国设计秀
第五、寻找父亲:parentNode 属性mw5中国设计秀
它的标准写法是 myXML.parentNode.mw5中国设计秀
我们先定位一个节点,金额。然后找父节点。mw5中国设计秀
mw5中国设计秀
 mw5中国设计秀

mw5中国设计秀
var myXML:XML = new XML();mw5中国设计秀
myXML.ignoreWhite = true;mw5中国设计秀
var myTextArea:mx.controls.TextArea;mw5中国设计秀
myXML.onLoad = function(success:Boolean):Void  {mw5中国设计秀
    if (success) {mw5中国设计秀
        var fir_Node = this.firstChild.firstChild;mw5中国设计秀
        myTextArea.text = fir_Node.parentNode.toString();mw5中国设计秀
mw5中国设计秀
    } else {mw5中国设计秀
        myTextArea.text = "error";mw5中国设计秀
    }mw5中国设计秀
};mw5中国设计秀
myXML.load("goods.xml");mw5中国设计秀
 mw5中国设计秀

mw5中国设计秀
mw5中国设计秀
在本节中我们接触到了toString()函数mw5中国设计秀
mw5中国设计秀
第六、类型的转化 toString() 函数 mw5中国设计秀
它的作用是把XML对象转化为字符串类型。在动态文本和很多V2组件中是无法显示XML类型节点值的,必须先把这个函数转化为文本才行。mw5中国设计秀
mw5中国设计秀
----------------------------------------------------------------------------------------------mw5中国设计秀
mw5中国设计秀
第七、开始创造 createlement 函数。mw5中国设计秀
Flash内置的XML类不仅可以可以读取XML文档,也可以在内部创建XML对象。mw5中国设计秀
createlement的标准写法是 myXML.createlement("节点值"); 如下例:mw5中国设计秀
mw5中国设计秀
 mw5中国设计秀

mw5中国设计秀
mw5中国设计秀
var myXML:XML=new XML();mw5中国设计秀
var elem_1:XMLNode=myXML.createlement("文具类");mw5中国设计秀
var elem_2:XMLNode=myXML.createlement("食品类");mw5中国设计秀
var elem_3:XMLNode=myXML.createlement("饮料类");mw5中国设计秀
myTextArea.text=myXML.toString();mw5中国设计秀
/*这里按回车无任何显示,原因是我们创建了节点但,并没有附加到myXML对象上*/mw5中国设计秀
 mw5中国设计秀

mw5中国设计秀
----------------------------------------------------------------------------------------------mw5中国设计秀
mw5中国设计秀
第八、附加节点 appendChild 函数mw5中国设计秀
通过本节将上一节创建的附加到XML对象上。mw5中国设计秀
 mw5中国设计秀

mw5中国设计秀
mw5中国设计秀
var myXML:XML=new XML();mw5中国设计秀
var myTextArea:mx.controls.TextArea;mw5中国设计秀
var elem_1:XMLNode=myXML.createlement("总类");mw5中国设计秀
var elem_2:XMLNode=myXML.createlement("食品类");mw5中国设计秀
var elem_3:XMLNode=myXML.createlement("饮料类");mw5中国设计秀
mw5中国设计秀
myXML.appendChild(elem_1);mw5中国设计秀
elem_1.appendChild(elem_2)mw5中国设计秀
elem_1.appendChild(elem_3);mw5中国设计秀
mw5中国设计秀
myTextArea.text=myXML.toString();mw5中国设计秀
mw5中国设计秀
 mw5中国设计秀

mw5中国设计秀
mw5中国设计秀
--------------------------------------------------------------------------------------------mw5中国设计秀
mw5中国设计秀
第九、创建文本 createTextNode 函数mw5中国设计秀
上面我们创建了节点,但“食品类”“饮料类”为空。这节我们给节点创建文本节点值。mw5中国设计秀
mw5中国设计秀
 mw5中国设计秀

mw5中国设计秀
var myXML:XML = new XML();mw5中国设计秀
var myTextArea:mx.controls.TextArea;mw5中国设计秀
var elem_1:XMLNode = myXML.createElement("总类");mw5中国设计秀
var elem_2:XMLNode = myXML.createElement("食品类");mw5中国设计秀
var elem_3:XMLNode = myXML.createElement("饮品类");mw5中国设计秀
myXML.appendChild(elem_1);mw5中国设计秀
elem_1.appendChild(elem_2);mw5中国设计秀
elem_1.appendChild(elem_3);mw5中国设计秀
mw5中国设计秀
var elem_4:XMLNode = myXML.createTextNode("哈密瓜");mw5中国设计秀
var elem_5:XMLNode = myXML.createTextNode("咖啡");mw5中国设计秀
mw5中国设计秀
elem_2.appendChild(elem_4);mw5中国设计秀
elem_3.appendChild(elem_5);mw5中国设计秀
mw5中国设计秀
myTextArea.text = myXML.toString();mw5中国设计秀
mw5中国设计秀
 mw5中国设计秀

mw5中国设计秀
mw5中国设计秀
-----------------------------------------------------------------------------------------mw5中国设计秀
第十、插入新节点 insertBeforemw5中国设计秀
本节学习如何插入节点,他的标准写法为mw5中国设计秀
myXML.insertBefore(insertPoint:XMLNode,newNode:XMLNode);mw5中国设计秀
它带有两个参数:insertPoint和newNode,它们的作用是将newNode节点插入到XML对象的mw5中国设计秀
子级列表中,且在insertPoint节点之前,如果insertPoint不是XMLNode对象的子级,插入失败。mw5中国设计秀
 mw5中国设计秀

mw5中国设计秀
var myXML:XML = new XML();mw5中国设计秀
var myTextArea:mx.controls.TextArea;mw5中国设计秀
var elem_1:XMLNode = myXML.createElement("总类");mw5中国设计秀
var elem_2:XMLNode = myXML.createElement("食品类");mw5中国设计秀
var elem_3:XMLNode = myXML.createElement("饮品类");mw5中国设计秀
myXML.appendChild(elem_1);mw5中国设计秀
elem_1.appendChild(elem_2);mw5中国设计秀
elem_1.appendChild(elem_3);mw5中国设计秀
mw5中国设计秀
var elem_4:XMLNode = myXML.createTextNode("哈密瓜");mw5中国设计秀
var elem_5:XMLNode = myXML.createTextNode("咖啡");mw5中国设计秀
mw5中国设计秀
elem_2.appendChild(elem_4);mw5中国设计秀
elem_3.appendChild(elem_5);mw5中国设计秀
/*---------------------------------------------------------------------------mw5中国设计秀
下面我们首先声明insertPoint为根节点的最后一个子节点。即咖啡节点,之所以这么做mw5中国设计秀
是想把insertPoint作为,insertBefore函数的第二个参数。定位之后,我们又创建了一个新的mw5中国设计秀
节点值newNode 最后我们把这个节点值插入。mw5中国设计秀
-----------------------------------------------------------------------------*/mw5中国设计秀
mw5中国设计秀
var insertPoint:XMLNode = myXML.firstChild.lastChild ;mw5中国设计秀
mw5中国设计秀
var newNode:XML = new XML("<模型类>高达模型</模型类>");mw5中国设计秀
myXML.firstChild.insertBefore(newNode, insertPoint);mw5中国设计秀
mw5中国设计秀
myTextArea.text = myXML.toString();mw5中国设计秀
 mw5中国设计秀

mw5中国设计秀
mw5中国设计秀
/*输出为:mw5中国设计秀
<总类>mw5中国设计秀
<食品类>哈密瓜</食品类>mw5中国设计秀
<模型类>高达模型</模型类>mw5中国设计秀
<饮品类>咖啡</饮品类>mw5中国设计秀
</总类>mw5中国设计秀
*/mw5中国设计秀
mw5中国设计秀
----------------------------------------------------------------------------------------------mw5中国设计秀
第十一、克隆节点 cloneNode 函数mw5中国设计秀
mw5中国设计秀
它的标准写法是:XMLNode.cloneNode(deep);它的作用是构造并返回一个类型、名称、值和属性与指定的XML对象均相同的新XML节点。如果将deep设置为true.则利用递归的方法克隆所有子节点。这样我们将得到一个和原始对象文件树,完全相同的副本。如果deep参数设置为false,或者XMLNode节点没有子节点,则只克隆当前节点。例:mw5中国设计秀
mw5中国设计秀
 mw5中国设计秀

mw5中国设计秀
var myXML:XML = new XML();mw5中国设计秀
var myTextArea:mx.controls.TextArea;mw5中国设计秀
var elem_1:XMLNode = myXML.createElement("总类");mw5中国设计秀
var elem_2:XMLNode = myXML.createElement("食品类");mw5中国设计秀
var elem_2_1:XMLNode = myXML.createElement("烧烤类");mw5中国设计秀
var elem_3:XMLNode = myXML.createElement("饮品类");mw5中国设计秀
myXML.appendChild(elem_1);mw5中国设计秀
elem_1.appendChild(elem_2);mw5中国设计秀
elem_1.appendChild(elem_3);mw5中国设计秀
elem_2.appendChild(elem_2_1);mw5中国设计秀
mw5中国设计秀
var elem_4:XMLNode = myXML.createTextNode("烤牛肉");mw5中国设计秀
var elem_5:XMLNode = myXML.createTextNode("咖啡");mw5中国设计秀
mw5中国设计秀
elem_2_1.appendChild(elem_4);mw5中国设计秀
elem_3.appendChild(elem_5);mw5中国设计秀
mw5中国设计秀
var insertPoint:XMLNode = myXML.firstChild.lastChild ;mw5中国设计秀
mw5中国设计秀
var newNode:XML = new XML("<模型类>高达模型</模型类>");mw5中国设计秀
myXML.firstChild.insertBefore(newNode, insertPoint);mw5中国设计秀
mw5中国设计秀
var CL_false:XMLNode = elem_2.cloneNode(false); mw5中国设计秀
var CL_true:XMLNode = elem_2.cloneNode(true);mw5中国设计秀
mw5中国设计秀
myXML.firstChild.appendChild(CL_false);mw5中国设计秀
myXML.firstChild.appendChild(CL_true);mw5中国设计秀
mw5中国设计秀
myTextArea.text = myXML.toString();mw5中国设计秀
mw5中国设计秀
 mw5中国设计秀

mw5中国设计秀
mw5中国设计秀
---------------------------------------------------------------------------------------------mw5中国设计秀
mw5中国设计秀
第十二、删除节点:removeNode 函数mw5中国设计秀
它的标准写法是: XMLNode.removeNode();mw5中国设计秀
这个函数的作用是从指定XML对象的父级中删除该对象,此外还将删除此节点下的所有子级节点。mw5中国设计秀
注意:这个函数只能在FLash中删除节点,不能对外部的XML文档产生影响。例:mw5中国设计秀
mw5中国设计秀
 mw5中国设计秀

mw5中国设计秀
var myXML:XML = new XML();mw5中国设计秀
myXML.ignoreWhite = true;mw5中国设计秀
var myTextArea:mx.controls.TextArea;mw5中国设计秀
myXML.onLoad = function(success:Boolean):Void  {mw5中国设计秀
    if (success) {mw5中国设计秀
        var delNode:XMLNode = this.firstChild.lastChild;mw5中国设计秀
        delNode.removeNode();mw5中国设计秀
        myTextArea.text = myXML.toString();mw5中国设计秀
    } else {mw5中国设计秀
        myTextArea.text = "some errors...";mw5中国设计秀
    }mw5中国设计秀
};mw5中国设计秀
myXML.load("goods.xml");mw5中国设计秀
mw5中国设计秀
 mw5中国设计秀

mw5中国设计秀
mw5中国设计秀
--------------------------------------------------------------------------------------------mw5中国设计秀
第十三、是否拥有子节点 hasChildNodes 函数mw5中国设计秀
mw5中国设计秀
在我们操作XML对象的时候,有时需要事先判断某个节点是否拥有子节点,实现这个效果可以用本节的 hasChildNodes 函数,它能够判断指定XML对象是否拥有子节点,并返回一个布尔值mw5中国设计秀
mw5中国设计秀
var myXML:XML = new XML();mw5中国设计秀
myXML.ignoreWhite = true;mw5中国设计秀
var myTextArea:mx.controls.TextArea;mw5中国设计秀
myXML.onLoad = function(success:Boolean):Void  {mw5中国设计秀
    if (success) {mw5中国设计秀
        var money_Node:XMLNode = this.firstChild.lastChild;mw5中国设计秀
        var pencil_Node:XMLNode = money_Node.previousSibling.firstChild;mw5中国设计秀
        myTextArea.text += "铅笔数目:";mw5中国设计秀
        myTextArea.text += pencil_Node.toString();mw5中国设计秀
        myTextArea.text += "t是否有子节点:";mw5中国设计秀
        myTextArea.text += pencil_Node.hasChildNodes().toString();mw5中国设计秀
        myTextArea.text += "nn";mw5中国设计秀
        myTextArea.text += "金额节点:"+money_Node.toString();mw5中国设计秀
        myTextArea.text += "t是否有子节点:";mw5中国设计秀
        myTextArea.text += money_Node.hasChildNodes().toString();mw5中国设计秀
    } else {mw5中国设计秀
        myTextArea.text = "some errors...";mw5中国设计秀
    }mw5中国设计秀
};mw5中国设计秀
myXML.load("goods.xml");mw5中国设计秀
mw5中国设计秀
 mw5中国设计秀

mw5中国设计秀
mw5中国设计秀
---------------------------------------------------------------------------------------------mw5中国设计秀
附:good.xml文件内容mw5中国设计秀
mw5中国设计秀
<?xml version="1.0" encoding="utf-8"?>mw5中国设计秀
<进货数据>mw5中国设计秀
<钢笔 颜色="蓝色" 质地="金属">6</钢笔>mw5中国设计秀
<钢笔 颜色="红色" 质地="塑料">7</钢笔>mw5中国设计秀
<铅笔 颜色="绿色" 质地="木制">20</铅笔>mw5中国设计秀
<金额>mw5中国设计秀
<毛收入>3000</毛收入>mw5中国设计秀
<成本>1000</成本>mw5中国设计秀
</金额>mw5中国设计秀
</进货数据>mw5中国设计秀