2

XML ファイルから円グラフに情報をロードするアプリケーションを設計しました。

最初に私のXMLは次のようになりました

<books>
   <stock>

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

   </stock>
</books>

そして、私のASコードは次のようになりました

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

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

result私がこれを行う場合

bookStock = evt.result.books.stock;

これで完全に機能し、生成された円グラフを確認できます。

しかし、ここで、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 要素にアクセスするにはどうすればよいですか? ここで何か変更する必要がありますか?

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

更新
これが私が取り組んでいるプロジェクトです。

http://min.us/mvkoXsU

4

2 に答える 2

2

実際には xml.books.stock.bookinfo は XML ノードの XMLList を取得します。エラーは、その XMLList を ArrayCollection インスタンスに割り当てるか、その XMLList のすべてのアイテムを配列として扱うことによって発生すると思いますが、実際にはそれらは XML です。ノード。

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

于 2011-02-09T13:34:59.127 に答える
1

現在の問題は、XMLListをXMLのように扱っていることです。

// 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

それを試してみてください。

于 2011-02-09T12:54:31.783 に答える