Liczenie wierszy nagłówków w pliku .xml

0

Cześć
mam następujący plik .xml

 <?xml version="1.0"?>
<Czasy>
  <pomiar_1>
    <DataDodania>17:31</DataDodania>
    <CzasPomiaru>17:41</CzasPomiaru>
  </pomiar_1>
  <pomiar_2>
    <DataDodania>17:34</DataDodania>
    <CzasPomiaru>19:14</CzasPomiaru>
  </pomiar_2>
</Czasy>

W tym przypadku pomiary są dwa pomiar_1 i pomiar_2
Chciałabym, aby program zliczał mi ilość wykonanych pomiarów i wynik zwracał w postaci liczby.

0

Wyszukaj główna gałąź "czasy" i zapytaj się o ilość "Children" a otrzymasz ilość pomiarów. Później za pomocą iteracji odczytaj argument każdego z pomiarów. Możesz do tego wykorzystać klasę XMLDocument lub XMLReader. Ta druga jest nieco inaczej implementowana. Moj przykład dla XMLDocument :

 
var _xml = new XmlDocument();
_xml.Load(_pathtoconfig);
XmlNodeList _node = _xml.GetElementsByTagName("pomiary"); //szukaj childnody dla glowej galezi "pomiary"
int _childnodes = _node.Item(0).ChildNodes.Count; //odczyt ilosci childnodow dla glownej galezi

na końcu daj pętlę i w _node wyszukaj czasy i je sobie pododawaj

0

Super dzięki działa!

A czy da się coś takiego zrobić aby główny rodzic przechowywał ilość pomiarów? Tzn aby wyglądało mniej więcej na coś takiego:

<Czasy = 2>
<pomiar_1>
<DataDodania>17:31</DataDodania>
<CzasPomiaru>17:41</CzasPomiaru>
</pomiar_1>
<pomiar_2>
<DataDodania>17:34</DataDodania>
<CzasPomiaru>19:14</CzasPomiaru>
</pomiar_2>
</Czasy>

i żeby dało się zrobić łatwy odczyt z tego rodzica

0

ale nie mam opcji aby nadać wartość głównej gałęzi bo mam tylko

  • WriteStartElement
  • WriteStartDocument
  • WriteStartAttribute

CreateNode jest tylko dla gałęzi potomnych

0

Jakiej klasy używasz do obsługi?

0

XElement

0

Skorzystaj zatem z metody SetAttributeValue

root.SetAttributeValue("ilosc", 1000);

//edit:
Odczyt tej wartości robisz np. tak:

object count = root.Attribute("ilosc").Value;
0

a w jaki sposób wycztać tą wartość z powrotem do programu np inta?

0

ale Twoje rozwiazanie działa tylko w czasie działania programu, a mi chodziło aby rodzic sie zapisywał do pliku i z pliku mozna bylo go wczytac

0

Możesz rozwinąć, bo nie rozumiem zbytnio. Co to znaczy "rodzic sie zapisywał do pliku" i "z pliku mozna bylo go wczytac"? Co chcesz konkretnie zapisać do pliku i co chcesz z niego odczytać? Poza tym, moje rozwiązanie działa w czasie gdy program działa, bo kiedy ma działać? ;-)

0

otwieram program
np do textboxa1 wpisuje 5 a do textboxa2 wpisuje ala ma kota i zapisuje program do xml

<rodzic = 5>
<dziecko>ala ma kota</dziecko>
</rodzic = 5>

Zamykam program

Następnego dnia wstaje rano i otwieram swoj program program a tutaj w textboxa1 jest napis 5 a w textboxa2 jest ala ma kota

0

Dlaczego więc nie możesz skorzystać z metody, którą podałem wyżej? (z wyjątkiem tego, że gałąź musi mieć jakiś atrybut, żeby przyjął jakąś wartość, ewentualnie sama gałąź będzie miała jakąś wartość, jak u Ciebie <dziecko>)
Po zapisaniu takiego xml'a do pliku i wyłączeniu programu, po ponownym uruchomieniu programu uruchamiasz metodę, która te wartości odczytuje i wpisuje je do odpowiednich kontrolek. Z czym konkretnie masz problem?

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