AS3操作XML,增加、删除、修改

var i:Number=0;//用于下面循环


var webcontent:String="Sontin’s Blog <b>Welcome to 终吾一生</b>";
var myXML:XML=<websites>
<site name="Sontin’s Blog" url="http://www.ldyy8.com">
<description>{webcontent}</description>
<pagebyte>1000</pagebyte>
</site>
<site name="百度" url="http://www.baidu.com">
<description>百度一下,就知道</description>
<pagebyte>500</pagebyte>
</site>
<site name="谷歌" url="http://www.google.com">
<pagebyte>100</pagebyte>
</site>
</websites>;

trace("————————–初始XML————————————–");
trace(myXML);

//先查找吧,下面操作都让XML变样了。
trace("————————–查找一————————————–");
//双点号(..),又称为后裔访问符(the descendent accessor),访问当前元素的所有子元素
trace("找到[description]个数:"+myXML..description.length());
trace(myXML..description); //myXML.site[0]..description; 这样同样正常的

trace("————————–查找二————————————–");
//通配符()
trace("通配符:"+myXML.site[0].@
.toXMLString()); //查第一个节点的所有属性
trace("site节点的所有属性:");
trace(myXML.site.@*.toXMLString()); //查所有 site节点的所有属性

trace("————————–查找三————————————–");
//大于 >,小于<,等于 == (双等哦,要不变修改了)
trace(myXML.site.(pagebyte==500));
trace(myXML.site.(pagebyte>500));
//**必须每个site节点下都有pagebyte元素
//把中间的括号去了看看,会有新发现哦。

trace("————————–查找四————————————–");
//查属性
trace(myXML.site.(@name=="谷歌"));
//**必须每个site节点下都有name属性

trace("————————–查找五,正则————————————–");
trace(myXML.site.(pagebyte.match(/^1\d+/))); //查找pagebyte第一个字符是 1的
trace("name中第一个字母是S的:"+myXML.site.(@name.match(/^S\w+/)));
//**必须每个site节点下都有pagebyte元素,正则我也不太会用基础的表示一下好了。呵呵

//添加
myXML.site[0].author=new XML();//添加一个空白节点(其实不用new也同样可以执行添加)
myXML.site[0].author.@name="子锡";//添加一个属性
myXML.site[0].author.@email="sontin@qq.com";//添加邮箱属性
myXML.site[0].author.school="社会大学";//添加一个子节点
//还有一些API 这就不提了,主要也就4项
/*
appendChild(child:Object):XML 在当前子元素列表之后添加
prependChild(child:Object):XML 在当前子元素列表之前添加
insertChildAfter(child1:Object,child2:Object):* 在子元素child1之后添加
insertChildBefore(child1:Object,child2:Object):* 在子元素child1之前添加

*/

//修改
myXML.site.description[0]=myXML.site.description[0]+" 摆正心态,做好自己。";
myXML.site.@name[1]=myXML.site.@name[1]+"一下";

//删除(很简单,其实就是修改)
delete myXML.site[1].@url; //删除节点属性
delete myXML.site[1].description; //删除节点指定子元素
//myXML.site[1]="";//删除其下所有子节点(元素)
//delete myXML.site[1];//删除该节点,包括其下子节点(元素)

//myXML=null; //删除整个XML呢?null就好了,但下面要判断哦;

if (myXML!=null) {
trace("———————-显示指定节点内容,没有输出空串————————–");
trace(myXML.site.description[0]);
trace(myXML.site[0].description);//建议

trace(&quot;---------------------循环显示site-------------------------------------------&quot;);
//.length()为统计个数
for (i=0; i&lt;myXML.site.length(); i++) {
    trace(&quot;第&quot; + i + &quot;个:&quot; + myXML.site[i]);
}

trace(&quot;----------------------循环显示site.name------------------------------------------&quot;);
trace(myXML.site.@name);
//.length()为统计个数
for (i=0; i&lt;myXML.site.@name.length(); i++) {
    trace(&quot;第&quot; + i + &quot;个name:&quot; + myXML.site.@name[i]);
}
//这样也可以(建议使用,这样更能体现对象的意义)
trace(&quot;---这样也可以:&quot;);
for (i=0; i&lt;myXML.site.length(); i++) {
    trace(&quot;第&quot; + i + &quot;个name:&quot; + myXML.site[i].@name);
}

trace(&quot;--------------------------最终的site--------------------------------------&quot;);
trace(myXML.site);

trace(&quot;--------------------------最终的XML--------------------------------------&quot;);
trace(myXML);

}




原文链接:http://bbs.9ria.com/blog-229904-21550.html


Donate
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2015-2022 Peng Xiang
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信