2011-02-09 8 views
2

XMLファイルから円グラフに情報をロードするアプリケーションを設計しました。円グラフを表示するためのサブXML要素の取得

まず私のXMLは、この

<books> 
    <stock> 

    <booktype>Novels</booktype> 
    <amountofbooks>100</amountofbooks> 

    </stock> 
</books> 

ように見えたそして、私のコードASは、私がこの

bookStock = evt.result.books.stock; 

は今、これは完全に私に動作しないresultイベントに

[Bindable] 
private var bookStock:ArrayCollection = new ArrayCollection(); 

var myPieSeries:PieSeries = new PieSeries(); 
myPieSeries.nameField = "booktype"; 
myPieSeries.field = "amountofbooks"; 

のように見えました生成された円グラフを見ることができます。

ただし、XMLを次のように変更したとします。

<books> 
    <stock> 
     <bookinfo> 
      <booktype>Fiction</booktype> 
      <amountofbooks>150</amountofbooks> 
     </bookinfo>  
    </stock> 

    <stock> 
     <bookinfo> 
      <booktype>Novels</booktype> 
      <amountofbooks>100</amountofbooks> 
     </bookinfo> 
    </stock> 

</books> 

結果イベントにアクセスするにはどうすればよいですか?

bookStock = evt.result.books.stock.bookinfo;

動作しません。私は "エラー:不明なプロパティ: 'bookinfo'を取得します。"

私がbookStockオブジェクトを分析したとき、私はこれを取得します。私は今、XML要素にアクセスするにはどうすればよい

Debug Image

?ここで何か変更する必要がありますか?

myPieSeries.nameField = "booktype"; 
myPieSeries.field = "amountofbooks"; 

ここでUPDATE
は、私が働いているプロジェクトです。

http://min.us/mvkoXsU

+0

私たちが自分で実行できるように、完全なコード(またはそのリンク)を置くことができますか?私は最初にXMLList(正しいことを確認するデバッグ)を読んでから、それを配列に変換することをお勧めします。 var _xmlList:XMLList = evt.result.books.stock; – Ryan

+0

@Brian:プロジェクトへのリンクで回答を更新しました –

+1

結果の型としてe4xを使用し、 'bookStock = evt.result..bookinfo; 'を設定することで、最終的に問題を解決できました。 –

答えて

2

実際にxml.books.stock.bookinfoはXMLノードのXMLListを取得しますが、そのXMLListをArrayCollectionインスタンスに割り当てるか、そのXMLListの各アイテムをArrayとして扱うか実際にはXMLノードです。

私はArrayCollectionを使ったことがありませんでしたが、XMLListをトラバース(forループ)してArrayCollectionを手動で組み立てる必要があると思います。

1

あなたが今持っている問題は、あなたがXMLのようなXMLListを扱っているということです。

// this works because there is only one XML node for each item in the chain 
bookStock = evt.result.books.stock; 

// how does this work? 
bookStock = evt.result.books.stock.bookinfo; 

// there are multiple stock nodes inside of "books" 
bookStock = evt.result.books.stock[0].bookinfo; 

trace(bookStock);//should trace the bookinfo from the first element 

これを試してください。

+0

OK、今私は理解:)しかし、私はすべての株式[] bookinfoの結果を配列に取得するのですか? –

+0

タイプ強制が失敗しました:これを試してみると、mx.utils :: ObjectProxy @ 54ac509をmx.collections.ArrayCollectionに変換できません。 –

+0

これは配列ではないので、XMLオブジェクトを返すことになります(ObjectProxyでラップされます)。 bookInfoノードで配列を返すのはなぜですか?この配列['Fiction'、 '150']のような配列は何を含んでいますか? – Shakakai

関連する問題