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

格式良好的XML、Yahoo Finance API输出,xml,xml-parsing,xmldocument,yahoo-api,dexterity,Xml,Xml Parsing,Xmldocument,Yahoo Api,Dexterity,我试图在我的应用程序中使用Yahoo Finance API的输出,但是,将XML输出加载到XML文档中总是失败。我正在做的是将XML输出保存为XML文件,并尝试将其加载到代码中的XML文档中。以下是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:/

我试图在我的应用程序中使用Yahoo Finance API的输出,但是,将XML输出加载到XML文档中总是失败。我正在做的是将XML输出保存为XML文件,并尝试将其加载到代码中的XML文档中。以下是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文档中

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

抛出错误: 无错误:**%2520from%2520yahoo.finance.quotes%2520where%2520symbol%2520in%2520%2528%2522AAPL%2522%2529%26env%3Dstore%3A%2F%2Fdatatables.org%2falltablewithkeys&charset=%28自动检测%29&doctype=Inline&group=0

你知道我能做什么吗?我应该直接从URL加载而不是保存到XML文件然后加载吗

或者,如何在每次保存文件时自动删除“yahoo:”?我知道我可以通过只在URL中指定我想要的元素来摆脱这个问题,但不确定如何删除“yahoo:”


谢谢

我想把问题归咎于这样一个事实:以这种方式使用YQL从Yahoo自己生成的数据中提取数据,而不是Yahoo自己生成的数据,它会告诉您。所以他们试图免除自己的责任

但是,只要看一下,就会返回格式良好的XML。查看同一操作的示例,很明显,由于缺少yahoo名称空间的定义,查询返回的格式不正确

这个输出也会给几乎所有的XML解析器一个非常合适和/或不可预测的结果,因为完全没有任何正常XML响应通常包含的版本细节、文档类型和编码信息

是的,你说的没错,雅虎的YQL服务可能存在一些古怪的异常现象

根据你对YQL论坛本身状态的观察,YQL论坛似乎缺乏任何活跃的活动,而另一个看起来几乎两年没有发布任何内容,有人可能会说,雅虎很可能在默默地反对/阻止使用这个API,并试图逐步淘汰它,这与事实并不遥远

如果计划通过YQL REST查询提取数据,则需要能够意识到这些差异,并相应地解决这些差异,最有可能的方法是将整个查询提取到字符串中,而不是尝试使用通用XML解析器,使用正则表达式之类的东西插入和定义

适当的文档类型和编码信息,以及 yahoo xml名称空间
如果您这样做了,那么将其交给XML解析器就可以了。但是在使用YQLAPI时,请注意这些困难

我不理解这个问题——从API返回的XML格式良好,应该不需要删除任何内容以使其可解析。yahoo:是使用xmlns:yahoo正确声明的名称空间前缀。你所说的真正的XML不好到底是什么意思?我必须说,我很佩服你的自信,相信你的代码是正确的,但是雅虎错了。请考虑你是否配置了解析器的可能性。如果我真的拿出了雅虎的命名空间:它解析文件就好了。如果它是灵巧的解析器,那么它可能不知道名字空间吗?这是一个内置的解析器,不是我自己的…我并不是说Yahoo是错的,我只是指出,没有名称空间,它就可以工作。。。。