夜鹰教程网-程序员的加油站
 当前位置:文章中心 >> web前端技术
XML节点相关知识
夜鹰教程网 来源:www.yyjcw.com 日期:2016-10-25 23:03:24
XML节点相关知识

第一、第一个子节点 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</成本>
</金额>
</进货数据>

复制链接 网友评论 收藏本文 关闭此页
上一条: XML初学者知道的一些基础知识  下一条: XML定制超越传统界限的开放XML
夜鹰教程网成立于2008年,目前已经运营了将近 13 年,发布了大量关于 html5/css3/C#/asp.net/java/python/nodejs/mongodb/sql server/android/javascript/mysql/mvc/easyui/vue/echarts原创教程。 我们一直都在坚持的是:认证负责、一丝不苟、以工匠的精神来打磨每一套教程,让读者感受到作者的用心。我们默默投入的时间,确保每一套教程都是一件作品,而不是呆板的文字和视频! 目前我们推出在线辅导班试运营,模式为一对一辅导,教学工具为QQ。我们的辅导学科包括 java 、android原生开发、webapp开发、商城开发、C#和asp.net开发,winform和物联网开发、web前端开发,但不仅限于此。 普通班针对的是国内学员,例如想打好基础的大学生、想转行的有志青年、想深入学习的程序员、想开发软件的初学者或者业余爱好者等。 就业办针对即将毕业上岗的大四学生,或者打算转行的初级开发工程师。 留学生班针对的是在欧美、加拿大、澳洲、日本、韩国、新加坡等地留学的中国学子,目的是让大家熟练地掌握编程技能,按时完成老师布置的作业,并能顺利地通过考试。 详细咨询QQ:1416759661   夜鹰教程网  基于角色的权限管理系统(c-s/b-s)。
  夜鹰教程网  基于nodejs的聊天室开发视频教程
  夜鹰教程网  Git分布式版本管理视频教程
  夜鹰教程网  MVC+EasyUI视频教程
  夜鹰教程网  在线考试系统视频教程
  夜鹰教程网  MongoDB视频教程。
  夜鹰教程网 Canvas视频教程
  夜鹰教程网 报表开发视频教程
  热点推荐
XML Schema学习笔记(1)
XML Schema学习笔记(2)
C#对XML文档的操作
ASP操作XMLDOM
XML入门教程:分析XML
百度新闻开放协议XML文档制作方法…
XSL 语言
用RSS做五分钟一自动更新的网站
XML入门教程:文档类型声明
XML教程:通过一个例子来学习XML的…
XML节点相关知识
把XML文件绑定到列表控件
XML+XSLT+CSS+JQuery+WebService组…
XHTML头部Doctype声明必不可少!
历数Firefox2.0对XML处理的改进
  最近更新
金三银四跳槽季—前端面试汇总
Sublime常用插件汇总(全)
大前端学习路线
如何克服前端学习进步慢的问题
web前端常见基础问题
阿里前端面试经历(转载)
Web前端需要掌握技术汇总(转)
ESLint详解-让你的代码更加规范
通过userAgent适配 PC端和移动端网…
js操作DOM中需要注意的问题
Promise编程简介
Emmet语法和实例
新手所必须掌握的前端知识汇总
移动端视口的相关概念及其适配方案…
上传图片立即预览

关于我们 | 网站建设 | 技术辅导 | 常见问题 | 联系我们 | 友情链接

夜鹰教程网 版权所有 www.yyjcw.com All rights reserved 备案号:蜀ICP备08011740号3