Jak pobrać konkretną wartość z pliku XML?

0

Wiem że w sieci jest wiele tutoriali jak pobierać dane ale większość to jest foreach po dokumencie i nie mogę znaleźć takiego który to robi tak jak chcę.
Przykładowy xml:

<?xml version="1.0" encoding="utf-8"?>
<Wartosci>
  <Wartosc>
    <cosik1>3asgv</cosik1>
    <cosik2>4das</cosik2>
    <id>0</id>
  </Wartosc>
  <Wartosc>
    <cosik1>3assgv</cosik1>
    <cosik2>4dfas</cosik2>
    <id>1</id>
  </Wartosc>  
  <Wartosc>
    <cosik1>3afssgv</cosik1>
    <cosik2>4aas</cosik2>
    <id>2</id>
  </Wartosc>
</Wartosci>

Chciałbym przeszukać dokument i np tam gdzie jest id=2 pobrać wartość z cosik1. Jak to zrobić?

1

Linq to XML

0

Kombinuje ale nie wiem co robię źle

XElement Wart = XElement.Load("test2.xml");
            var zap = from el in Wart.Elements("Wartosci").
                    Elements("Wartosc").Elements()
                    //where (string)el.Element("id") == "2"
                    select el;
            foreach (var z in zap)
                Console.WriteLine(z); 

Dokument ten sam co w pierwszym poście.

Dobra, już nieważne, poprawiłem to.
Mam teraz inne pytanie, jak wypisać to na ekran bez foreach? Bo zawsze będę miał tylko jeden wynik.

             XElement Wart = XElement.Load("test2.xml");
            var zap = from el in Wart.Elements("Wartosc")
                    where (string)el.Element("id") == "2"
                    select el;
            foreach (var z in zap)
                Console.WriteLine(z.Element("cosik2").Value);
1

Na oko bez znajomości C# coś w stylu:

Console.WriteLine(zap[0].Element("cosik2").Value);

albo

Console.WriteLine(zap.get(0).Element("cosik2").Value);

Jakby nie szło, to zobacz sobie jakie metody ma zap.

0

Znalazłem :P

Console.WriteLine(zap.First().Element("cosik2").Value); 

Dzięki wszystkim za pomoc, to chyba wszystko.

0

Warto byłoby to zabezpieczyć instrukcją try, w razie gdyby nic nie znalazło.

0

To był tylko taki testowy programik, w normalnym projekcie oczywiście.

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