格式良好的XML,Yahoo Finance API输出

时间:2014-01-14 23:03:39

标签: xml xml-parsing xmldocument yahoo-api dexterity

我正在尝试在我的应用程序中使用Yahoo Finance API的输出,但是,将XML输出加载到XML文档中对我来说仍然失败。我正在做的是将XML输出保存为XML文件,并尝试将其加载到我的代码中的XML Document中。以下是API生成的输出:

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20%28%22AAPL%22%29&env=store://datatables.org/alltableswithkeys

这两个是在代码中将XML加载到XML文档中的问题。我尝试删除这两件事,然后就可以了,但事实并非如此。

第一行,我必须删除'yahoo:'否则它将无效

然后我还必须从XML

中删除TickerTrend元素

删除/修复这两个后,我可以在我的代码中将XML加载到XML文档中。

我没有包含任何代码,因为我使用Dexterity并且加载代码工作正常,只有实际的XML不正常。我尝试了两个验证器,一个抛出错误而另一个没有。

引发错误:http://www.w3schools.com/xml/xml_validator.asp
没有错误:http://validator.w3.org/check?uri=http%3A%2F%2Fquery.yahooapis.com%2Fv1%2Fpublic%2Fyql%3Fq%3Dselect%2520 *%2520来自%2520yahoo.finance.quotes%2520其中%2520symbol%2520in%2520%2528%2522AAPL%2522%2529%26env%3Dstore%3A%2F%2Fdatatables.org%2Falltableswithkeys& charset = %28detect +自动%29&安培;!DOCTYPE =内嵌&安培;基团= O

任何想法我能做什么?如果我直接从URL加载,而不是保存到XML文件然后加载?

或者每次保存文件时如何自动删除'yahoo:'?我知道我可以通过在URL中仅指定我想要的元素但不确定如何删除'yahoo:'

来摆脱<TickerTrend>

谢谢!

1 个答案:

答案 0 :(得分:0)

我正要把这个问题归咎于这样一个问题:以这种方式使用YQL从user-generated tables中提取数据,而不是Yahoos自己生成的数据,它会告诉你。所以他们试图从中免除责任。

但是,只需查看output from their console,就可以返回格式良好的XML。查看同一操作的actual supposed REST query,很明显由于缺乏定义,查询的返回结构不正确&#34; yahoo&#34;命名空间。

由于完全缺乏任何普通XML响应通常包含的版本详细信息,文档类型和编码信息,因此此输出还将为任何XML解析器提供极其适合和/或不可预测的结果。

所以是的,你说雅虎的YQL服务可能存在一些疯狂的异常现象是正确的。

基于观察结果,您可以自己了解YQL论坛本身的状态,这些论坛似乎缺乏任何类型的强大活动,另一个看起来their blog,它几​​乎没有发布任何内容2年,也许可能与实际情况相差不大,说明雅虎最有可能悄悄地弃用/劝阻使用这个API并尝试逐步淘汰它。

如果您计划通过YQL REST查询提取数据,那么您需要能够意识到这些差异,并相应地围绕它们进行工作,最有可能的方法是将整个查询拉入字符串而不是尝试使用通用XML解析器,使用正则表达式来插入和定义

  1. 适当的文档类型和编码信息以及
  2. &#34; yahoo&#34; xml名称空间
  3. 如果你这样做,那么把它交给一个XML解析器就可以了。但要注意这些&#34;困难&#34;使用YQL API时。