2013-09-25 6 views
0

Я пытаюсь сделать программу Windows RT, и я не могу понять, как получить значение корневого элемента. XmlDocument содержит только:Как получить значение корневого элемента в xml

<double>0.7423</double>

Как бы я идти о получении значения «0.7422» с помощью C# и окна магазина? Каждый раз, когда я пытаюсь что-то, он возвращает нулевое значение.

Это то, что я пытался до сих пор:

  `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);` 

Но скорость всегда возвращает нулевое значение.

+0

'Каждый раз, когда я пытаюсь что-то, он возвращает нулевое значение.' Вы можете показать нам, что вы пробовали? –

+0

Пожалуйста, разместите XML-контент, потому что для меня работает то, что работает _not_. – Xyroid

+0

Вот ссылка на веб-сайт, где вы можете найти документ xml: [ссылка] (http://www.webservicex.net/CurrencyConvertor.asmx/ConversionRate?FromCurrency=USD&ToCurrency=EUR) – user2525395

ответ

0

Взял меня, но это было проще, чем я думал. Вот как я это сделал:

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

Спасибо всем за вашу помощь/предложение!

1

Попробуйте

string xml = "<double>0.7423</double>"; 
var document = XDocument.Parse(xml); 
var doubleValue = document.Descendants("double").FirstOrDefault().Value; 
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); 
    } 
} 
0

Не тестировался, но это хороший способ, я думаю

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

Вы можете получить доступ к корневому элементу документа с помощью Root собственности :

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

Но в этом случае вам даже не нужно создавать документ. Вы можете создать элемент:

double d = (double)XElement.Load(path_to_xml); 
Смежные вопросы