0

这是我第一次尝试弄乱 Flash 并读取 xml 文件。我已经加载了提要,我什至将提要输出文本放入文本框中。

最后一点是我想获得从 xml 提要返回的节点总数。此外,XML 提要是特定于 wordpress 类别的提要。

例如,该结构类似于频道 -> 项目 -> 标题。所以我想我想计算提要中“项目”元素的数量?

我已经尝试了很多东西,但我看不到这个。

这是我到目前为止所拥有的:

var xmlLoader:URLLoader = new URLLoader();
var xmlData:XML = new XML();

xmlLoader.addEventListener(Event.COMPLETE, LoadXML);
xmlLoader.load(new URLRequest("{my rss feed}"));

/* This loads the XML */
function LoadXML(e:Event):void {
     xmlData = new XML(e.target.data);
     parseData(xmlData);
}

 // Here is where i need to get the total number of nodes from my xml file;
 // The reason is i want to give my random range function a "maximum" value.
 // I'm pulling a random post from the feed

 function randomRange(minNum:Number, maxNum:Number):Number 
 {
      return (Math.floor(Math.random() * (maxNum - minNum + 1)) + minNum);
 }
 var randomNum = randomRange(0, 3);



function parseData(mTip:XML):void {
     flashTip.htmlText = mTip.channel.item[randomNum].description.text();
}

这是包含所有编辑的最终脚本。我已经使用 AS3 在 Flash CS5 中对其进行了测试。它也在工作。也许其他人会发现这很有用。

var xmlLoader:URLLoader = new URLLoader();
var xmlData:XML = new XML();

xmlLoader.addEventListener(Event.COMPLETE, LoadXML);
xmlLoader.load(new URLRequest("{my wordpress rss feed url}"));

/* This loads the XML */
function LoadXML(e:Event):void {
xmlData = new XML(e.target.data);
parseData(xmlData);
 }

 /* This gets the data for today's tip */
 function parseData(mTip:XML):void {

     var itemXMLList:XMLList = XMLList(mTip..item);
     var count:int = itemXMLList.length();
     var finalcount:int = count - 1;
     //trace(finalcount);

 function randomRange(minNum:Number, maxNum:Number):Number 
 {
return (Math.floor(Math.random() * (maxNum - minNum + 1)) + minNum);
 }
 var randomNum = randomRange(0, finalcount);
 //trace(randomNum);

 flashTip.htmlText = mTip.channel.item[randomNum].description.text();

 }
4

2 回答 2

2

试试这个

请注意,双点表示此处的项目节点可能处于我们从 XML 检索的任何级别(深度),并且它始终返回 XMLList。

var itemXMLList:XMLList = XMLList(mTip..item);
var count:int = itemXMLList.length();
于 2012-12-11T04:37:48.043 回答
0

如果我正确理解您的问题,您可以通过该length()方法得到它。

trace( mTip.property1[0].property2[0].property3.length() ); //will return however many property3s there are in mTip.property1[0].property2[0]

请注意,在 XML 类中,length不是一个属性,因为它与StringArrayVector和任何其他数量的类一样。这是一种方法。我经常犯这个错误,这绝对是错误的。

如果您想要文档中的所有节点而不仅仅是一个特定的节点,我不知道一种快速的方法(不是没有一个)。我可能只是遍历每个节点并手动计数。

于 2012-12-10T22:39:28.660 回答