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

Liczenie wierszy nagłówków w pliku .xml
marta1995
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 5 lat
  • Postów:155
0

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

Kopiuj
 <?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.

wedlock
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 4 lata
  • Lokalizacja:Bartoszyce
  • Postów:180
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 :

Kopiuj
 
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

marta1995
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 5 lat
  • Postów:155
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

wedlock
tak , poprzez dodanie argumentu do gałęzi czasy np. <Czasy ilość=2> i wtedy odczytujesz argument noda. Ale po co to jak masz wartość .Count.
marta1995
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 5 lat
  • Postów:155
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

ST
  • Rejestracja:prawie 15 lat
  • Ostatnio:ponad 11 lat
0

Jakiej klasy używasz do obsługi?


Pozdro & poćwicz!
marta1995
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 5 lat
  • Postów:155
0

XElement

ST
  • Rejestracja:prawie 15 lat
  • Ostatnio:ponad 11 lat
0

Skorzystaj zatem z metody SetAttributeValue

Kopiuj
root.SetAttributeValue("ilosc", 1000);

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

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

Pozdro & poćwicz!
edytowany 1x, ostatnio: stfu
marta1995
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 5 lat
  • Postów:155
0

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

ST
Popatrz na edit mojego posta.
marta1995
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 5 lat
  • Postów:155
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

ST
  • Rejestracja:prawie 15 lat
  • Ostatnio:ponad 11 lat
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ć? ;-)


Pozdro & poćwicz!
marta1995
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 5 lat
  • Postów:155
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

ST
  • Rejestracja:prawie 15 lat
  • Ostatnio:ponad 11 lat
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?


Pozdro & poćwicz!

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.