当前位置: 首页 > 图文教程 > XML家族 > XML > WEBJX收集整理XML节点相关知识

XML
XML简易教程之四
XML与HTML的结合(上)
XML与HTML的结合(下)
XML入门的常见问题(一)
XML入门的常见问题(二)
XMLHTTP资料
什么是XML
什么是 XML Web Service
XML正在接管Web服务 成为SOA的基础
怎么样在网页上读取远程xml的数据
XML教程—编写结构完整的XML文档
读写xml文件的2个小函数
XML文档的基本操作
初学者如何开发出一个高质量的J2EE系统
优化 JavaScript 代码
自动更新程序的设计框架
使Firefox对XML的处理兼容IE的节点处理方法
WML学习之四 锚和任务
WML学习之五 显示表单
WML学习之六 事件

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-30   浏览: 48 ::
收藏到网摘: n/a

第一、第一个子节点 firstChild属性:
下面这个示例演示firstChild属性的使用


var myXML:XML = new XML();
var myTextArea:mx.controls.TextArea;
myXML.ignoreWhite=true;
myXML.onLoad=function(success:Boolean):Void{
    if(success){
        myTextArea.text+=this;
        myTextArea.text+="\n\n----firstChild----\n\n";
        myTextArea.text+=this.firstChild;
        myTextArea.text+="\n\n-firstChild.firstChild-\n\n";
        myTextArea.text+=this.firstChild.firstChild;
    }else{
        myTextArea.text="error";
    }
}
myXML.load("goods.xml");

------------------------------------------------------------------------------------------

第二、最后一个节点 lastChild属性

var myXML:XML = new XML();
var myTextArea:mx.controls.TextArea;
myXML.ignoreWhite=true;
myXML.onLoad=function(success:Boolean):Void{
    if(success){
        myTextArea.text+=this;
        myTextArea.text+="\n\n----lastChild----\n\n";
        myTextArea.text+=this.lastChild;
        myTextArea.text+="\n\n-lastChild.lastChild-\n\n";
        myTextArea.text+=this.lastChild.lastChild;
    }else{
        myTextArea.text="error";
    }
}
myXML.load("goods.xml");

---------------------------------------------------------------------------------------------------

第三、兄弟节点 nextSibling 属性


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


--------------------------------------------------------------------------------------------

第四、另一个兄弟节点 previousSibling
可以说previousSibling 是nextSibling的逆过程。只要把nextSibling弄懂。previousSibling就不是难题了。


var myXML:XML = new XML();
var myTextArea:mx.controls.TextArea;
myXML.ignoreWhite = true;
myXML.onLoad = function(success:Boolean):Void  {
    if (success) {
        var lastNode = this.firstChild.lastChild;
        myTextArea.text += lastNode; //定位金额
        myTextArea.text += "\n\n----previousSibling----\n";
        myTextArea.text += lastNode.previousSibling;
        myTextArea.text += "\n\n-previousSibling.previousSibling-\n";
        myTextArea.text += lastNode.previousSibling.previousSibling;
        myTextArea.text += "\n\n-previousSibling * 3-\n";
        myTextArea.text += lastNode.previousSibling.previousSibling.previousSibling;
        myTextArea.text += "\n\n-previousSibling * 4-\n";
        myTextArea.text += lastNode.previousSibling.previousSibling.previousSibling.previousSibling;
    } else {
        myTextArea.text = "error";
    }
};
myXML.load("goods.xml");



----------------------------------------------------------------------------------------------

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


var myXML:XML = new XML();
myXML.ignoreWhite = true;
var myTextArea:mx.controls.TextArea;
myXML.onLoad = function(success:Boolean):Void  {
    if (success) {
        var fir_Node = this.firstChild.firstChild;
        myTextArea.text = fir_Node.parentNode.toString();

    } else {
        myTextArea.text = "error";
    }
};
myXML.load("goods.xml");



在本节中我们接触到了toString()函数

第六、类型的转化 toString() 函数
它的作用是把XML对象转化为字符串类型。在动态文本和很多V2组件中是无法显示XML类型节点值的,必须先把这个函数转化为文本才行。

----------------------------------------------------------------------------------------------

第七、开始创造 createlement 函数。
Flash内置的XML类不仅可以可以读取XML文档,也可以在内部创建XML对象。
createlement的标准写法是 myXML.createlement("节点值"); 如下例:



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


----------------------------------------------------------------------------------------------

第八、附加节点 appendChild 函数
通过本节将上一节创建的附加到XML对象上。



var myXML:XML=new XML();
var myTextArea:mx.controls.TextArea;
var elem_1:XMLNode=myXML.createlement("总类");
var elem_2:XMLNode=myXML.createlement("食品类");
var elem_3:XMLNode=myXML.createlement("饮料类");

myXML.appendChild(elem_1);
elem_1.appendChild(elem_2)
elem_1.appendChild(elem_3);

myTextArea.text=myXML.toString();



--------------------------------------------------------------------------------------------

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


var myXML:XML = new XML();
var myTextArea:mx.controls.TextArea;
var elem_1:XMLNode = myXML.createElement("总类");
var elem_2:XMLNode = myXML.createElement("食品类");
var elem_3:XMLNode = myXML.createElement("饮品类");
myXML.appendChild(elem_1);
elem_1.appendChild(elem_2);
elem_1.appendChild(elem_3);

var elem_4:XMLNode = myXML.createTextNode("哈密瓜");
var elem_5:XMLNode = myXML.createTextNode("咖啡");

elem_2.appendChild(elem_4);
elem_3.appendChild(elem_5);

myTextArea.text = myXML.toString();



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


var myXML:XML = new XML();
var myTextArea:mx.controls.TextArea;
var elem_1:XMLNode = myXML.createElement("总类");
var elem_2:XMLNode = myXML.createElement("食品类");
var elem_3:XMLNode = myXML.createElement("饮品类");
myXML.appendChild(elem_1);
elem_1.appendChild(elem_2);
elem_1.appendChild(elem_3);

var elem_4:XMLNode = myXML.createTextNode("哈密瓜");
var elem_5:XMLNode = myXML.createTextNode("咖啡");

elem_2.appendChild(elem_4);
elem_3.appendChild(elem_5);
/*---------------------------------------------------------------------------
下面我们首先声明insertPoint为根节点的最后一个子节点。即咖啡节点,之所以这么做
是想把insertPoint作为,insertBefore函数的第二个参数。定位之后,我们又创建了一个新的
节点值newNode 最后我们把这个节点值插入。
-----------------------------------------------------------------------------*/

var insertPoint:XMLNode = myXML.firstChild.lastChild ;

var newNode:XML = new XML("<模型类>高达模型</模型类>");
myXML.firstChild.insertBefore(newNode, insertPoint);

myTextArea.text = myXML.toString();



/*输出为:
<总类>
<食品类>哈密瓜</食品类>
<模型类>高达模型</模型类>
<饮品类>咖啡</饮品类>
</总类>
*/

----------------------------------------------------------------------------------------------
第十一、克隆节点 cloneNode 函数

它的标准写法是:XMLNode.cloneNode(deep);它的作用是构造并返回一个类型、名称、值和属性与指定的XML对象均相同的新XML节点。如果将deep设置为true.则利用递归的方法克隆所有子节点。这样我们将得到一个和原始对象文件树,完全相同的副本。如果deep参数设置为false,或者XMLNode节点没有子节点,则只克隆当前节点。例:


var myXML:XML = new XML();
var myTextArea:mx.controls.TextArea;
var elem_1:XMLNode = myXML.createElement("总类");
var elem_2:XMLNode = myXML.createElement("食品类");
var elem_2_1:XMLNode = myXML.createElement("烧烤类");
var elem_3:XMLNode = myXML.createElement("饮品类");
myXML.appendChild(elem_1);
elem_1.appendChild(elem_2);
elem_1.appendChild(elem_3);
elem_2.appendChild(elem_2_1);

var elem_4:XMLNode = myXML.createTextNode("烤牛肉");
var elem_5:XMLNode = myXML.createTextNode("咖啡");

elem_2_1.appendChild(elem_4);
elem_3.appendChild(elem_5);

var insertPoint:XMLNode = myXML.firstChild.lastChild ;

var newNode:XML = new XML("<模型类>高达模型</模型类>");
myXML.firstChild.insertBefore(newNode, insertPoint);

var CL_false:XMLNode = elem_2.cloneNode(false);
var CL_true:XMLNode = elem_2.cloneNode(true);

myXML.firstChild.appendChild(CL_false);
myXML.firstChild.appendChild(CL_true);

myTextArea.text = myXML.toString();



---------------------------------------------------------------------------------------------

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


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



--------------------------------------------------------------------------------------------
第十三、是否拥有子节点 hasChildNodes 函数

在我们操作XML对象的时候,有时需要事先判断某个节点是否拥有子节点,实现这个效果可以用本节的 hasChildNodes 函数,它能够判断指定XML对象是否拥有子节点,并返回一个布尔值

var myXML:XML = new XML();
myXML.ignoreWhite = true;
var myTextArea:mx.controls.TextArea;
myXML.onLoad = function(success:Boolean):Void  {
    if (success) {
        var money_Node:XMLNode = this.firstChild.lastChild;
        var pencil_Node:XMLNode = money_Node.previousSibling.firstChild;
        myTextArea.text += "铅笔数目:";
        myTextArea.text += pencil_Node.toString();
        myTextArea.text += "\t是否有子节点:";
        myTextArea.text += pencil_Node.hasChildNodes().toString();
        myTextArea.text += "\n\n";
        myTextArea.text += "金额节点:"+money_Node.toString();
        myTextArea.text += "\t是否有子节点:";
        myTextArea.text += money_Node.hasChildNodes().toString();
    } else {
        myTextArea.text = "some errors...";
    }
};
myXML.load("goods.xml");



---------------------------------------------------------------------------------------------
附:good.xml文件内容

<?xml version="1.0" encoding="utf-8"?>
<进货数据>
<钢笔 颜色="蓝色" 质地="金属">6</钢笔>
<钢笔 颜色="红色" 质地="塑料">7</钢笔>
<铅笔 颜色="绿色" 质地="木制">20</铅笔>
<金额>
<毛收入>3000</毛收入>
<成本>1000</成本>
</金额>
</进货数据>