因为工作需要, 花了点时间研究了一下as2.0里的xml解析类XPathAPI. 用起来挺方便
主要是四个方法:
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文件第一帧的代码:
import mx.xpath.XPathAPI;
var arr=new Array()
var my_xml:XML = new XML();
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);
trace("---------------------------\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", "this is new value"));
trace("节点aa的新值为:\n " + mx.xpath.XPathAPI.selectSingleNode(arr[0], "/list/aa").firstChild.nodeValue);
trace("---------------------------");
};
上一篇:
FLASH如何动态"修改"注册点 下一篇:没有了