如何在xml中获取root元素的值

时间:2013-09-25 00:35:06

标签: c# xml microsoft-metro windows-store-apps

我正在尝试制作一个Windows RT程序,而我似乎无法弄清楚如何获取根元素的值。 xmldocument仅包含:

<double>0.7423</double>

如何使用c#和window store获取值“0.7422”?每次我尝试它时都会返回一个空值。

这是我到目前为止所尝试的:

            `var getRate = from query in xmlDoc.Descendants("double")
                             select new
                             {
                                 Rate = query.Value
                             };

            foreach (var query in getRate)
            {
                rate = Convert.ToDouble(query.Rate);

            }`

我也试过这个:

`var rate= xmlDoc.Root.Element("double").Value;

 var rate= xmlDoc.Element("double").Value;

 rate = (double)XElement.Load(xmlstream);`

但是rate总是返回一个空值。

5 个答案:

答案 0 :(得分:1)

试试这个

string xml = "<double>0.7423</double>";
var document = XDocument.Parse(xml);
var doubleValue = document.Descendants("double").FirstOrDefault().Value;

答案 1 :(得分:1)

您可以通过Root属性访问文档的根元素:

double d = (double)XDocument.Load(path_to_xml).Root;

但在这种情况下,您甚至不需要创建文档。您可以创建元素:

double d = (double)XElement.Load(path_to_xml);

答案 2 :(得分:0)

非常明显:

internal class Program
{
    private static void Main(string[] args)
    {
        var xml = "<double>0.7423</double>";

        Debug.WriteLine("Method1: {0}", Method1(xml));
        Debug.WriteLine("Method2: {0}", Method2(xml));
        Debug.WriteLine("Method3: {0}", Method3(xml));
    }

    private static double Method1(string xml)
    {
        var xdoc = XDocument.Parse(xml);
        var doubleStr = xdoc.Root.Value;
        var doubleValue = double.Parse(doubleStr, CultureInfo.InvariantCulture);
        return doubleValue;
    }

    private static double Method2(string xml)
    {
        var xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(xml);
        return double.Parse(xmlDoc.FirstChild.InnerText, CultureInfo.InvariantCulture);
    }

    private static double Method3(string xml)
    {
        var doubleStr = xml.Substring(
            xml.IndexOf(">") + 1,
            xml.IndexOf("</") - xml.IndexOf(">") - 1
            );

        return double.Parse(doubleStr, CultureInfo.InvariantCulture);
    }
}

答案 3 :(得分:0)

未经测试,但这是我认为的好方法

XmlDocument doc = new XlmDocument();
doc.Load("path");
XmlNode root = doc.DocumentElement.InnerText

答案 4 :(得分:0)

我花了一段时间,但它比我想象的要简单。我是这样做的:

            var xelement = XElement.Parse(outputtext);
            rate = (double)xelement;

感谢大家的帮助/建议!

相关问题