如何从XML获取整数/双精度值

时间:2014-10-04 22:37:49

标签: c# xml visual-studio stocks

我正在尝试使用雅虎的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”)但是我无法让它工作。

任何帮助都将不胜感激,谢谢。

2 个答案:

答案 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.InnerTextfield.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);
        }

如果值是整数/小数,则可以从字符串转换为它们!