[url]http://bbs.9ria.com/viewthread.php?tid=75361&extra=page%3D1%26amp;orderby%3Ddateline%26amp;filter%3D2592000[/url]
项目组中,大多数人喜欢使用XML作为数据交接桥梁,常会碰到对XML进行大批量搜索与提取,比如下面的XML文件:
XML/HTML代码
我想提取id大于20的数据,你会怎么做?
用for和 if 循环判断id>20,如果你真是这样做的,看到这篇blog因该感到幸运了!
我有3000条数据,你还用for的话,那是个很吃力的过程了。
1.AS3的XML实现了E4X的处理标准,配合XML与XMLList的取值方法可以很灵活地操作XML数据,正确的做法因该是:
AS3代码
当然,也可以这样写
AS3代码
使用XML结点名取值,结果是一样的。
2.接下来,我们还可以针对title进行搜索,代码:
AS3代码
3.或许你会说我太土了,用indexOf进行字符判断,为什么不用正则表太式?是的,可以这样写
AS3代码
但这并不是RegExp可识别的方法,我们再改下,写个函数代理判断
AS3代码
4.最后,我们取到的数据,都是xmlList类型,你在使用时如果喜欢用XML来操作,那可以再创建一个XML对象
AS3代码
项目组中,大多数人喜欢使用XML作为数据交接桥梁,常会碰到对XML进行大批量搜索与提取,比如下面的XML文件:
XML/HTML代码
var xml:XML=<xml>
<item id="6" title="商创博客"/>
<item id="12" title="商创技术"/>
<item id="43" title="shch8.com"/>
<item id="26" title="webBase"/>
<item id="17" title="shch8.com/webbase"/>
</xml>;
我想提取id大于20的数据,你会怎么做?
用for和 if 循环判断id>20,如果你真是这样做的,看到这篇blog因该感到幸运了!
我有3000条数据,你还用for的话,那是个很吃力的过程了。
1.AS3的XML实现了E4X的处理标准,配合XML与XMLList的取值方法可以很灵活地操作XML数据,正确的做法因该是:
AS3代码
trace(xml.child("*").(@id>20))
/*输出
<item id="43" title="shch8.com"/>
<item id="26" title="webBase"/>
*/
当然,也可以这样写
AS3代码
trace(xml.item.@id>20)
使用XML结点名取值,结果是一样的。
2.接下来,我们还可以针对title进行搜索,代码:
AS3代码
var xml:XML=<xml>
<item id="6" title="商创博客"/>
<item id="12" title="商创技术"/>
<item id="43" title="shch8.com"/>
<item id="26" title="webBase"/>
<item id="17" title="shch8.com/webbase"/>
</xml>;
var searchKey:String="商创"
trace(xml.child("*").(@title.indexOf(searchKey)!=-1));
/*输出
<item id="6" title="商创博客"/>
<item id="12" title="商创技术"/>
*/
3.或许你会说我太土了,用indexOf进行字符判断,为什么不用正则表太式?是的,可以这样写
AS3代码
xml.child("*").(pattern.test(@title));
但这并不是RegExp可识别的方法,我们再改下,写个函数代理判断
AS3代码
var xml:XML=<xml>
<item id="6" title="商创博客"/>
<item id="12" title="商创技术"/>
<item id="43" title="shch8.com"/>
<item id="26" title="webBase"/>
<item id="17" title="shch8.com/webbase"/>
</xml>;
var searchKey:String="shch"
var pattern:RegExp=new RegExp(searchKey);
trace(xml.child("*").(regTest(@title)));
function regTest(obj:String):Boolean{
return pattern.test(obj)
}
/*输出
<item id="43" title="shch8.com"/>
<item id="17" title="shch8.com/webbase"/>
*/
4.最后,我们取到的数据,都是xmlList类型,你在使用时如果喜欢用XML来操作,那可以再创建一个XML对象
AS3代码
var xml:XML=<xml>
<item id="6" title="商创博客"/>
<item id="12" title="商创技术"/>
<item id="43" title="shch8.com"/>
<item id="26" title="webBase"/>
<item id="17" title="shch8.com/webbase"/>
</xml>;
var searchKey:String="shch"
var pattern:RegExp=new RegExp(searchKey);
var getXML:XML=<data/>
getXML.appendChild(xml.child("*").(regTest(@title)))
trace(getXML)
function regTest(obj:String):Boolean{
return pattern.test(obj)
}
/*输出
<data>
<item id="43" title="shch8.com"/>
<item id="17" title="shch8.com/webbase"/>
</data>
*/