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

これを試して

二重ドットは、ここで item ノードが 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 に答える