Kłopot z XElement

0

Witam. Mam prosty kod napisany w C#. Jedna z funkcji zwraca mi wartość: "<lat>50.123456</lat>" jako XElement. Czy jesz możliwość usunięcia <lat> i </lat> i przekonwertowanie tej liczby na zmienną double? Z góry dziękuję za pomoc.

1

Double.Parse(element.Value);

1

z XElement możesz wyciągnąć wartość poprzez .Value

później trzeba jeszcze skonwertować : Convert.ToDouble()

a ponieważ w tym ciągu masz znak "." a nie "," to trzeba będzie użyć Replace()

2

Nigdy w życiu Replace().
Convert.ToDouble(element.Value, System.Globalization.CultureInfo.InvariantCulture);

Pozdrawiam.

2
string sb = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
            "<foo>" +
            "   <lata>" +
            "      <lat>50.123456</lat>" +
            "      <lat>51.123456</lat>" +
            "      <lat>52.123456</lat>" +
            "      <lat>53.123456</lat>" +
            "   </lata>" +
            "</foo>";

var xdoc = XDocument.Parse(sb);
var ageList = xdoc.Descendants("lat");
foreach (var age in ageList)
{
   double d = double.Parse(age.Value, CultureInfo.InvariantCulture);
   Console.WriteLine(d);
}
0

Dzięki za pomoc. Tylko, że gdy używam tej funkcji to wyskakuje taki błąd podczas wprowadzania danych do programu.

An unhandled exception of type 'System.FormatException' occurred in mscorlib.dll
Additional information: Input string was not in a correct format.
 double zmienna = Convert.ToDouble( Double.Parse(variable_1.Value), System.Globalization.CultureInfo.InvariantCulture); 

i

 double zmienna =  Convert.ToDouble( Double.Parse(variable_1.Value) ); 

Gdzie w variable_1 jest ten element do zamiany.

@DibbyDum wartość nie jest podana w stringu tylko XElement.

0
kubek66 napisał(a):

@DibbyDum wartość nie jest podana w stringu tylko XElement.

He?

string sb = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
            "<foo>" +
            "   <lata>" +
            "      <lat>50.123456</lat>" +
            "      <lat>51.123456</lat>" +
            "      <lat>52.123456</lat>" +
            "      <lat>53.123456</lat>" +
            "   </lata>" +
            "</foo>";

XDocument xdoc = XDocument.Parse(sb);
IEnumerable<XElement> ageList = xdoc.Descendants("lat");
foreach (XElement age in ageList)
{
   double d = double.Parse(age.Value, CultureInfo.InvariantCulture);
   Console.WriteLine(d);
}
0

A nie, przepraszam. Wszystko dziala. Dziekuje za pomoc :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1