无法在 AS3 中解析 XML 数据

Posted

技术标签:

【中文标题】无法在 AS3 中解析 XML 数据【英文标题】:Unable to parse XML data in AS3 【发布时间】:2016-04-07 00:09:08 【问题描述】:

我正在使用 AS3 和 Flash CC。我正在尝试构建一个简单的天气小部件,但我似乎无法解析来自 Yahoo Weather API 的任何 XML 数据。 XML 数据加载,当我跟踪整个 XML 数据时,您可以在输出中看到它。

这是我在我的 fla 文件的第一帧动作脚本中使用的代码:

var myXML: XML = new XML();
var XML_URL: String = "https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20in%20(select%20woeid%20from%20geo.places(1)%20where%20text%3D%22nome%2C%20ak%22)&format=xml&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys";

var myXMLURL: URLRequest = new URLRequest(XML_URL);
var myLoader: URLLoader = new URLLoader(myXMLURL);
myLoader.addEventListener(Event.COMPLETE, xmlLoaded);

function xmlLoaded(event: Event): void 
    myXML = XML(myLoader.data);
    trace("Data loaded.");
    var yweather:Namespace = new Namespace("http://xml.weather.yahoo.com/ns/rss/1.0");
    trace(myXML);   //successfully shows entire XML data
    trace(myXML.query.results.channel.description);  //unsuccessful
    trace(myXML.channel.item.yweather::condition.@temp + " °F"); //only shows °F

有谁知道为什么我无法返回特定的 XML 数据,比如温度?提前致谢!

注意:我使用this tutorial 作为这个的基础。

【问题讨论】:

【参考方案1】:

呃。这就像根据教程错误地移动数据一样简单,因为我的 xml 以不同的结果级别出现。如果有人遇到此问题,则需要忽略 XML 数据的根级别。就我而言,您忽略“查询”并从“结果”开始:

不正确:

不成功,因为我包含了查询

trace(myXML.query.results.channel.description);

不成功,因为我没有包含结果

trace(myXML.channel.item.yweather::condition.@temp + " °F");

更正:

trace(myXML.results.channel.description);
trace(myXML.results.channel.item.yweather::condition.@temp + " °F");

或者,我可以使用 URL:http://weather.yahooapis.com/forecastrss?w=2460286,而我从教程中获取的用于 temp 的原始代码也可以:

trace(myXML.channel.item.yweather::condition.@temp + " °F");

描述代码也适用于频道级别:

trace(myXML.channel.description);

希望这可以帮助解决此问题的任何人!

【讨论】:

以上是关于无法在 AS3 中解析 XML 数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AS3 中最小化/缩小 XML 文档

在 AS3 中为游戏存储 XML 数据的最佳方式

解析后无法取消列出 XML 文件

无法解析和读取 xml 数据

nfs共享盘无法解析xml

解析的 XML 数据无法使用 javascript 显示