AS2 XML解析、循环、数组和;物体
我想用AS2解析一个XML文件,但我不确定如何将检索到的值放入一个对象数组中,其中的键数与找到的值匹配。代码有if语句来过滤掉不需要的元素,但是数组键的数量将始终等于for循环的长度限制 如何创建只包含未定义值的对象数组?AS2 XML解析、循环、数组和;物体,xml,actionscript-2,Xml,Actionscript 2,我想用AS2解析一个XML文件,但我不确定如何将检索到的值放入一个对象数组中,其中的键数与找到的值匹配。代码有if语句来过滤掉不需要的元素,但是数组键的数量将始终等于for循环的长度限制 如何创建只包含未定义值的对象数组? //AS2 var xml:XML = new XML(); xml.ignoreWhite=true; xml.onLoad = function(success) { if (success) { var myImage = xml.
//AS2
var xml:XML = new XML();
xml.ignoreWhite=true;
xml.onLoad = function(success)
{
if (success)
{
var myImage = xml.firstChild.childNodes;
var img_arr = new Array();
for (i=0; i<myImage.length; i++)
{
img_arr[i] = new Object();
var nodeName = xml.firstChild.childNodes[i].NodeName;
//condition to filter out values
if (nodeName == "value")
{
img_arr[i]["file"] = xml.firstChild.childNodes[i].firstChild.NodeValue;
img_arr[i]["name"] = xml.firstChild.childNodes[i].childNodes[1].NodeValue;
}
}
//trace(img_arr.length)
}
}
xml.load("test.xml");
//AS2
var xml:xml=new xml();
ignoreWhite=true;
xml.onLoad=函数(成功)
{
如果(成功)
{
var myImage=xml.firstChild.childNodes;
var img_arr=新数组();
对于(i=0;i您可以在将空值推入数组之前尝试查找空值
比如:
if (xml.firstChild.childNodes[i].firstChild.NodeValue.length > 0) {
// here put the value into your array
}
使用值的长度来查找其是否为null(将其视为字符串)有时会很有用:如果为0,则表示在nodeValue中未找到任何字符,表示节点不存在或节点为空
使用您的代码,以下是我的建议(必须很可能适应您正在做的事情,尚未经过测试):
for(i=0;i 0&&xml.firstChild.childNodes[i].childNodes[1].NodeValue.length>0){
newNode=新对象();
newNode[“file”]=xml.firstChild.childNodes[i].firstChild.NodeValue;
newNode[“name”]=xml.firstChild.childNodes[i].childNodes[1].NodeValue;
}
}
if(newNode!=null&&newNode!=未定义){
img_arr.push(新节点);
}
}
@Jens Struwe,是的。可能需要某种数组推送。在断断续续地研究了一年左右之后,我终于意识到,如果在我的问题中的条件中添加“&&nodeValue!=undefined”,它可能会像你建议的那样检查长度。是时候测试一下了。
for (i=0; i<myImage.length; i++) {
var nodeName:String = xml.firstChild.childNodes[i].NodeName;
var newNode:Object;
//condition to filter out values
if (nodeName == "value") {
// means that both of the nodes exists and contain a valid value
if (xml.firstChild.childNodes[i].firstChild.NodeValue.length > 0 && xml.firstChild.childNodes[i].childNodes[1].NodeValue.length > 0) {
newNode = new Object();
newNode["file"] = xml.firstChild.childNodes[i].firstChild.NodeValue;
newNode["name"] = xml.firstChild.childNodes[i].childNodes[1].NodeValue;
}
}
if (newNode != null && newNode != undefined) {
img_arr.push(newNode);
}
}