我有两个功能;submitIngredientChoices
,它将变量传递到查询字符串中,并以这种格式传递给名为 Recipe Puppy 的网站:/?i=chicken,lamb,pesto&q=italian&format=xml
. 该网站有一个开放的 API 并返回一个 XML 文档。
我的第二个函数recipeResults()
实例化了一个 DataGrid,它的 dataProvider 设置为 URLLoader 数据 ( loader.data
)。数据被加载到 DataGrid 中,但它看起来不是很好,并且将一些列显示为文本,我希望它们成为超链接。
function submitIngredientChoices(event:MouseEvent):void {
var url : String = 'http://www.recipepuppy.com/api/';
// url variables all which will appear after ? sign
var urlVariables : URLVariables = new URLVariables ();
var ingredients:Array = [so.data.meat1, so.data.meat2, so.data.meat3,
so.data.veg1, so.data.veg2, so.data.veg3,
so.data.carbs1, so.data.carbs2, so.data.carbs3];
var others:Array = [so.data.other1, so.data.other2, so.data.other3,
so.data.cuisine1, so.data.cuisine2, so.data.cuisine3,
so.data.mealtype1, so.data.mealtype2, so.data.mealtype3];
urlVariables['i'] = ingredients.join();
urlVariables['q'] = others.join();
urlVariables['format'] = "xml";
// creating new URL Request
var request:URLRequest = new URLRequest (url);
// setting the variables it need to carry
request.data = urlVariables;
// setting method of delivering variables ( POST or GET )
request.method = URLRequestMethod.GET;
trace(request.data);
// creating actual loader
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, recipeResults);
loader.load(request);
}
我的数据网格功能:
function recipeResults(event:Event):void {
addChild(_dataGrid);
var xmlDP:XML = new XML(loader.data);
// create a new data provider with this and register it with the DataGrid
dp = new DataProvider(xmlDP);
dataGrid.dataProvider = dp;
}
我知道有一个xmlParse
函数可以解决这个问题,但是我的 dataGrid 是如何自动加载未解析的 XML 文档而不发生任何解析的呢?
我还想知道如何采用下面的代码轻松更改列,以及如何将a href
我的 xml 数据列作为超链接?
编辑:我对 AS2 更熟悉,但我刚刚意识到 AS3 的主要新功能之一是自动 XML 解析(我认为这是正确的,不是吗?)无论如何我的问题仍然存在,我该如何改变外观和数据网格的感觉(即我如何访问 xml 元素并将它们归因于数据网格中的列?)