Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript按子节点过滤xml';s属性_Xml_Actionscript - Fatal编程技术网

Actionscript按子节点过滤xml';s属性

Actionscript按子节点过滤xml';s属性,xml,actionscript,Xml,Actionscript,as4新手,正在尝试找出如何通过子节点的属性过滤xml。类似下面的内容 <root> <level1 id="1"> <level2> <sample class="C1" /> <sample class="C2" /> <sample class="C3" /> </level2> </level1> <level1 id="2

as4新手,正在尝试找出如何通过子节点的属性过滤xml。类似下面的内容

<root>
<level1 id="1">
    <level2>
        <sample class="C1" />
        <sample class="C2" />
        <sample class="C3" />
    </level2>
</level1>
<level1 id="2">
    <level2>
        <sample class="C1" />
        <sample class="C3" />
    </level2>
</level1>
<level1 id="3">
    <level2>
        <sample class="C1" />
    </level2>
</level1>
<level1 id="3">
    <level2>
        <sample class="C2" />
    </level2>
</level1>
</root>

目标是获得包含class=“C1”示例的LEVEL1和LEVEL2的列表。类似以下内容的内容作为结果XMLList

<root>
<level1 id="1">
    <level2>
        <sample class="C1" />
        <sample class="C2" />
        <sample class="C3" />
    </level2>
</level1>
<level1 id="2">
    <level2>
        <sample class="C1" />
        <sample class="C3" />
    </level2>
</level1>
<level1 id="3">
    <level2>
        <sample class="C1" />
    </level2>
</level1>
</root>


在Actionscript 3.0中:

var xmlLoader:URLLoader = new URLLoader();
var xmlData:XML = new XML();
 
xmlLoader.addEventListener(Event.COMPLETE, LoadXML);
 
xmlLoader.load(new URLRequest("put-your-link-to-your-xml-file-here"));
 
function LoadXML(e:Event):void {

xmlData = new XML(e.target.data);

trace(xmlData); // traces the raw data
trace(root.level1.level2); // traces level 2
trace(root.level1.level2.text()); // can trace the text node of level 2, kind of similar
trace(root.level1.@class); // traces the "class" attribute inside level 1

var level-1-List:XMLList = root.level1; //gets an array of all level1

for each (var itemElement:XML in level-1-List) {

trace(itemElement); // loop through list and trace it

}
}

我会这样做:

var xmlLoader:URLLoader = new URLLoader();
var xmlData:XML = new XML(); 
xmlLoader.addEventListener(Event.COMPLETE, parseXML);
xmlLoader.load(new URLRequest("put-your-link-to-your-xml-file-here"));

     function parseXML(e:Event):void {

     xmlData = new XML(e.target.data);
     xmlData.ignoreWhiteSpace = xmlData.ignoreComments = true;

     var xmlList:XMLList = new XMLList();
     var i:uint = 0;
     var l:uint = xmlData.level1.length();
     while(i<l)
     {
         var j:uint = 0;
         var m:uint = xml.level1[i].level2.sample.length();
         while(j<m)
         {
             if(xml.level1[i].level2.sample[j].@cls == "C1")
             {
                 xmlList += xml.level1[i];
                 break;
             }
             ++j;
         }
         ++i;
     }
     trace(xmlList);
var-xmlLoader:URLLoader=new-URLLoader();
var xmlData:XML=newxml();
addEventListener(Event.COMPLETE,parseXML);
load(新的URLRequest(“在此处放置指向xml文件的链接”);
函数parseXML(e:Event):void{
xmlData=新的XML(e.target.data);
xmlData.ignoreWhiteSpace=xmlData.ignoreComments=true;
var xmlList:xmlList=new xmlList();
变量i:uint=0;
var l:uint=xmlData.level1.length();

而(我是“as4”?也许你在AS3中想到了E4X?你好,Eatdoku,你有更近的距离吗?
var xmlLoader:URLLoader = new URLLoader();
var xmlData:XML = new XML(); 
xmlLoader.addEventListener(Event.COMPLETE, parseXML);
xmlLoader.load(new URLRequest("put-your-link-to-your-xml-file-here"));

     function parseXML(e:Event):void {

     xmlData = new XML(e.target.data);
     xmlData.ignoreWhiteSpace = xmlData.ignoreComments = true;

     var xmlList:XMLList = new XMLList();
     var i:uint = 0;
     var l:uint = xmlData.level1.length();
     while(i<l)
     {
         var j:uint = 0;
         var m:uint = xml.level1[i].level2.sample.length();
         while(j<m)
         {
             if(xml.level1[i].level2.sample[j].@cls == "C1")
             {
                 xmlList += xml.level1[i];
                 break;
             }
             ++j;
         }
         ++i;
     }
     trace(xmlList);