电脑软硬件应用网
当前位置: 电脑软硬件应用网 > 设计学院 > 网络编程 > XML与XHTML教程 > 正文
XML节点相关知识
XML节点相关知识
2011-12-13 9:51:09  文/佚名   出处:电脑软硬件应用网   

第八、附加节点 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节点没有子节点,则只克隆当前节点。//本文来自www.45its.com例:


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</成本>
</金额>
</进货数据>

上一页  [1] [2] 

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新热点 最新推荐 相关阅读
    XML解析错误:未组织好的解决办法
    使用xsl样式表无法查看xml 输入的解
    XML初学者知道的一些基础知识
    xml文件如何打开?怎样打开XML文件?
    利用XML配置实体列表
    通过 XML Catalog 实现 XML 文件的自
    XML的四种解析器原理及性能比较
    使用jquery的ajax解析xml的例子
    详解相互转换JSON-lib包的相关介绍
    教你使用quickwap的xml查询农历信息
    关于45IT | About 45IT | 联系方式 | 版权声明 | 网站导航 |

    Copyright © 2003-2011 45IT. All Rights Reserved 浙ICP备09049068号