我正在尝试使用雅虎的YQL来获取股票数据。
我曾尝试使用XML来实现这一目标,但我在获取整数值时遇到了麻烦(我认为我需要使用double,因为价格是小数)。最初我能够获取字符串值,例如“货币”,但我更改了一些代码,无法再获得退货。
我试图从节点中获取值以显示在文本框中(tbValue);
string url = @"http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22AAPL%22)&env=store://datatables.org/alltableswithkeys";
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(url)
XmlNode field = xmlDoc.SelectSingleNode("/query/results/quote/Name");
string desiredValue = "";
if (field != null ) desiredValue = field.Value;
MessageBox.Show(desiredValue);
tbValue.Text = ptest;
我试图在尝试获取双节点时尝试使用int.Parse(“string”)但是我无法让它工作。
任何帮助都将不胜感激,谢谢。
答案 0 :(得分:1)
我不确定您的问题是什么,但是这个Linq2Xml代码正确返回Bid
值
(只需将节点转换为正确的类型)
var xDoc = XDocument.Load(url);
var bid = (decimal)xDoc.XPathSelectElement("/query/results/quote/Bid");
PS:你需要
using System.Xml.XPath;
using System.Xml.Linq;
答案 1 :(得分:1)
您应该使用field.InnerText
,field.Value
在您的情况下返回null。
此代码正常运行。
static void Main(string[] args)
{
//Error Trapping
string url = @"http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22AAPL%22)&env=store://datatables.org/alltableswithkeys";
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(url);
XmlNode field = xmlDoc.SelectSingleNode("/query/results/quote/Name");
string desiredValue = "";
if (field != null )
desiredValue = field.InnerText;
Console.WriteLine(desiredValue);
}
如果您想拍多张便条。
XmlNodeList nodes = xmlDoc.SelectNodes("/query/results/quote/Name");
foreach(XmlNode node in nodes)
{
if (node != null)
Console.WriteLine(node.InnerText);
}
如果值是整数/小数,则可以从字符串转换为它们!