我设计了一个应用程序,它将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";
更新
这是我正在合作的项目。
答案 0 :(得分:2)
实际上xml.books.stock.bookinfo将为您提供XML节点的XMLList,我认为您的错误来自将XMLList分配给ArrayCollection实例,或者将该XMLList的每个项目都视为一个数组,实际上它们是XML节点。
我从未使用过ArrayCollection,但我认为你需要遍历(for循环)你的XMLList并手动组合ArrayCollection。
答案 1 :(得分: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
试一试。