主要是四个方法:
mx.xpath.XPathAPI.selectNodeList(node:XMLNode, path:String):Array
mx.xpath.XPathAPI.selectSingleNode(node:XMLNode, path:String):node:XMLNode
mx.xpath.XPathAPI.setNodeValue(node:XMLNode, path:String, newValue:String):Number
mx.xpath.XPathAPI.getEvalString( node:XMLNode, path:String):String
参数说明: 第一个参数:node为XMLNode类型, 就是将要解析的xml节点啦;
第二个参数:path为字符串路径, 就是相对于node节点开始往下的节点名称;
(第三个函数中的newValue为String就没什么好说的啦)。
下面是使用例子,新建一个fla文件,在第一帧把代码写上测试看效果吧!fla文件第一帧的代码:
importmx.xpath.XPathAPI;
vararr=newArray()
varmy_xml:XML=newXML();
my_xml.ignoreWhite=true;
my_xml.load("xml.xml");
my_xml.onLoad=function(success){ //将根节点下的所有节点列表解析到arr数组中;
arr=mx.xpath.XPathAPI.selectNodeList(this.firstChild,"/lists/list");
trace("节点数组:\n"+arr);
race("---------------------------\n");
//输出数组列表中第一个节点下的第一个节点的值(即aa的值);
//与下面的语句等同:trace("节点aa的值为:\n"+mx.xpath.XPathAPI.selectSingleNode(arr[0],"/list/aa").firstChild.nodeValue);
trace("节点aa的值为:\n"+mx.xpath.XPathAPI.selectSingleNode(arr[0],"/list").childNodes[0].firstChild.nodeValue); trace("---------------------------\n"); //输出数组列表中第一个节点的url属性的值;
trace("第一个list节点的url属性值:\n"+mx.xpath.XPathAPI.selectSingleNode(arr[0],"/list").attributes.url);
trace("---------------------------\n"); //输出节点aa处在arr[0]节点的相对位置的字符串值;
trace("aa在根节点对应下来的位置信息:\n"+mx.xpath.XPathAPI.getEvalString(arr[0],"/list/aa")); trace("---------------------------\n"); //;
trace("更新节点aa的值并返回节点更新的数目:"+mx.xpath.XPathAPI.setNodeValue(arr[0],"/list/aa","thisisnewvalue"));
trace("节点aa的新值为:\n"+mx.xpath.XPathAPI.selectSingleNode(arr[0],"/list/aa").firstChild.nodeValue);
trace("---------------------------"); }; xml.xml 的内容: <?xmlversion="1.0"encoding="utf-8"?>
<lists> <listurl="music/大家笑哈哈-阿桑.mp3"lrc="">
<aa>aaaaaa</aa>
<bb>bbb</bb>
</list>
<listurl="music/呵責.mp3"lrc="">22222</list>
<listurl="music/忙打哟.mp3"lrc="">33333</list>
<listurl="music/小宝贝我要亲晕你.mp3"lrc="">44444</list>
</lists>