FLEX 关于XML结点的一些操作
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" ??? layout="absolute" creationComplete="xmlInfo()"> ??? <mx:Script> ??? ??? <![CDATA[ ??? ??? ??? private var myData:XML; ??? ??? ??? private var myData2:XML; ??? ??? ??? private var myData3:XML; ??? ??? ??? private var myData4:XML; ??? ??? ??? ??? ??? ??? private function xmlInfo():void { ??? ??? ??? ??? this.myData = ??? ??? ??? ??? ??? <root> ??? ??? ??? ??? ??? ??? <node type="boy" id="01" name="新新"> ??? ??? ??? ??? ??? ??? ??? <childNode type="hello"> ??? ??? ??? ??? ??? ??? ??? ??? hello world! ??? ??? ??? ??? ??? ??? ??? </childNode> ??? ??? ??? ??? ??? ??? ??? <childNode type="toy"/> ??? ??? ??? ??? ??? ??? ??? <childNode type="bick"/> ??? ??? ??? ??? ??? ??? </node> ??? ??? ??? ??? ??? ??? <node type="girl" id="02" name="玲玲" class="mfc"/> ??? ??? ??? ??? ??? ??? <node type="car" id="03" name="宝马" /> ??? ??? ??? ??? ??? ??? <event time="0" parent="01" description="事件1"/> ??? ??? ??? ??? ??? ??? <event time="1" parent="02" description="事件2"/> ??? ??? ??? ??? ??? ??? <event time="2" parent="01" description="事件3"/> ??? ??? ??? ??? ??? ??? <event time="3" parent="01" description="事件4"/> ??? ??? ??? ??? ??? ??? <event time="4" parent="01" description="事件5"/> ??? ??? ??? ??? ??? </root> ??? ??? ??? ??? this.myData2 = ??? ??? ??? ??? ??? <root> ??? ??? ??? ??? ??? ??? <node type="boy" id="01" name="新新"/> ??? ??? ??? ??? ??? </root> ??? ??? ??? ??? this.myData3 = ??? ??? ??? ??? ??? <root> ??? ??? ??? ??? ??? ??? <node type="boy" id="01" name="新新"> ??? ??? ??? ??? ??? ??? ??? aaa ??? ??? ??? ??? ??? ??? </node> ??? ??? ??? ??? ??? </root> ??? ??? ??? ??? this.myData4 = ??? ??? ??? ??? ??? <root> ??? ??? ??? ??? ??? ??? <node type="boy" id="01" name="新新"> ??? ??? ??? ??? ??? ??? ??? <child id="02" /> ??? ??? ??? ??? ??? ??? </node> ??? ??? ??? ??? ??? </root> ??? ??? ??? ??? //trace(this.myData.elements()); //返回所有节点(elements不包括根节点) ??? ??? ??? ??? //trace(this.myData.elements("*")); //同上 ??? ??? ??? ??? //trace(this.myData.elements("node")); //返回所有节点名为node的节点,包括它的子节点 ??? ??? ??? ??? //trace(this.myData.node[0].elements()); //返回第一个节点名为node的节点的所有子节点 ??? ??? ??? ??? //trace(this.myData.node[0].elements().toXMLString()); //使用toXMLString方法,返回这个节点和它的子节点以及节点的内容 ??? ??? ??? ??? //trace(this.myData2.elements());//返回所有节点,如果只有一个子节点,则输入节点的内容(这里为空) ??? ??? ??? ??? //trace(this.myData2.elements().toXMLString()); //使用toXMLString方法,返回这个节点以及它的子节点和内容 ??? ??? ??? ??? //trace(this.myData3.elements()); //返回所有节点,则输入节点的内容(这里为aaa) ??? ??? ??? ??? //trace(this.myData3.elements().toXMLString());//使用toXMLString方法,返回这个节点和其子节点和内容 ??? ??? ??? ??? //trace(this.myData.node[1]); //返回第二个节点名为node有子节点以及它的所有子节点(如果只有一个子节点,输出其子节点和节点内容,这里是空) ??? ??? ??? ??? //trace(this.myData.node[1].toXMLString()); //使用toXMLString方法,返回这个节点和其子节点和内容(如果只有一个节点,返回其本身) ??? ??? ??? ??? //trace(this.myData.elements().length())//返回一个节点的子节点个数(不包括子节点的后代节点) ??? ??? ??? ??? //trace(this.myData.childNode); //这里没有返回. 因为我们不知道childNode的具体位置 ??? ??? ??? ??? //我们可以用以下的方法达到上面想要达到的目的 ??? ??? ??? ??? //trace(this.myData.descendants("childNode")); //返回所有节点名为childNode的后代节点<parentNode.descendants("nodeName") 取parentNode的所有名为nodeName的后代节点> ??? ??? ??? ??? //this.myData.elements("*") 和??? this.myData.ddescendants("*");作用相同 ??? ??? ??? ??? //trace(this.myData.descendants("*").length()); //返回myData的所有下级个数,注意它和下面的myData.elements().length()是不同的,这个是返回所有子节点的个数(只包括只节点) ??? ??? ??? ??? //trace(myData.elements().length()); //返回所有子节点的个数(只包括子节点) ??? ??? ??? ??? //trace(myData.node[2].name());? //返回节点名对象 (返回值为object类型) ??? ??? ??? ??? //trace(myData.node[2].name().localName); //返回节点名称 ??? ??? ??? ??? //下面两种方法都是得到节点的内容部分,不论它下面有一条还是多条数据,并且值为XML类型,必要时要转换成string类型和number类型 ??? ??? ??? ??? //trace(myData3.node[0]); ??? ??? ??? ??? //trace(myData3.node[0].text()); ??? ??? ??? ??? //trace(myData4.node[0].child[0].parent()); //parent()方法可以获取指定节点的父结点 ??? ??? ??? ??? //trace(myData.node[0].attribute("name")); //返回指定节点的name属性,??? ??? ??? ??? //trace(myData.node[0].@name); //上面的也可以这样写 ??? ??? ??? ??? //trace(myData.node[0].@*); //获取某节点的全部属性 和 myData.node[0].attribute("*");同 ??? ??? ??? ??? //trace(myData.node[0].attribute("*")[1]); //获取某节点的第二个属性 ??? ??? ??? ??? //trace(myData.node[0].attribute("*")[1].name()); //获取指定属性的属性名 ??? ??? ??? ??? //trace(myData.event.(@parent=="01" && @time=="3").toXMLString()); //条件过滤,注:如果所获取的节点数为1,就会显示它的内容,如要显示它本身,要使用toXMLString方法,多个条件用&&连接 ??? ??? ??? ??? /** ??? ??? ??? ??? ?*??? 添加节点操作 ??? ??? ??? ??? ?**/ ??? ??? ??? ??? //组合生成XML用appendChild()方法 ??? ??? ??? ??? //this.myData.appendChild("<bottle name='bottle' id='77'/>"); //在子节点列表的最后添加一个子节点 ??? ??? ??? ??? //this.myData.prependChild("<typedef name='bottle' />"); //在子节点列表的最前面添加一个子节点 ??? ??? ??? ??? //插入节点方法(insertChildAfter()添加到指定节点的后面,insertChildBefore()添加到指定节点的前面) ??? ??? ??? ??? //this.myData.insertChildAfter(this.myData.node[2],"<hello name='hello world' />"); ??? ??? ??? ??? //this.myData.insertChildBefore(this.myData.node[2],"<hello name='hello world' />"); ??? ??? ??? ??? ??? ??? ??? ??? //第二种添加节点方法newElement ??? ??? ??? ??? //this.myData.newElement = <struct name="typedef" />; ??? ??? ??? ??? //this.myData.newElement = <struct name="typedef">bottle</struct>; //带子节点的方式 ??? ??? ??? ??? ??? ??? ??? ??? //给节点添加内容和修改节点内容 ??? ??? ??? ??? //this.myData.node[1] = "aaa"; ??? ??? ??? ??? //this.myData.node[1] = "bbb"; ??? ??? ??? ??? //this.myData.children()[myData.elements().length()-1] = "ccc"; //通过计算获取要修改的下标 ??? ??? ??? ??? ??? ??? ??? ??? //动态添加节点,节点的名字由变量组成 ??? ??? ??? ??? //var b:int = 3; ??? ??? ??? ??? //this.myData["node"+b] = "baba"; ??? ??? ??? ??? /** ??? ??? ??? ??? ?*??? 删除节点和属性操作 ??? ??? ??? ??? ?**/ ??? ??? ??? ??? //delete this.myData.node[1];? //删除节点 ??? ??? ??? ??? //delete this.myData.node[1].@name; //删除节点的name属性 ??? ??? ??? ??? trace(this.myData); ??? ??? ??? } ??? ??? ??? ??? ??? ]]> ??? </mx:Script> </mx:Application> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |