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

Posted

技术标签:

【中文标题】如何从 XML 获取整数/双精度值【英文标题】:How to get integer/double value from XML 【发布时间】:2014-11-29 15:04:03 【问题描述】:

我正在尝试使用 Yahoo 的 YQL 获取股票数据。

我尝试使用 XML 来完成此操作,但在获取整数值时遇到了麻烦(我认为我需要使用双精度值,因为价格是小数)。本来我可以得到字符串值,比如'Currency',但是我改变了一些代码,再也不能得到返回了。

我正在尝试从节点获取值以显示在文本框 (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") ......但我无法让它工作。

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

【问题讨论】:

【参考方案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);
        

如果值是整数/十进制,您可以从字符串转换为它们!

【讨论】:

太好了。我相信 InnerText 将值作为字符串引入,即使它是 int/decimal,所以不需要转换 :) 感谢您的帮助。 @adventuresncode 欢迎您,祝您的项目或作业好运 :)【参考方案2】:

我不确定你的问题是什么,但是这个 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;

【讨论】:

以上是关于如何从 XML 获取整数/双精度值的主要内容,如果未能解决你的问题,请参考以下文章

如何从c ++中的文件中读取双精度

如何在android中添加两个没有指数的双精度值

如何使用 stringstream 在 C++ 中将字符串转换为双精度值 [关闭]

如何将两个整数相除以获得双精度?

字符串中的双精度或整数?

如何从 foreach 循环中将双精度值附加到 2D 数组,并访问前一个索引?