Citirea unui XML folosind libxml2

Folosesc libxml2.so pentru a parsa fișierul xml în C pe platforma LINUX. Am XML-ul meu în formatul menționat mai jos. Pot avea un număr de conturi în fișiere. Eu folosesc libxml pentru prima dată după ce cineva mi-a sugerat pe forum. Sunt în stare să analizez dosarul că am un singur cont. Nu înțeleg cum să implementez dacă am mai multe conturi. Oricine a implementat un astfel de lucru înainte în C, libxml pe Linux.


   123 
   XYZ 
   GA 



   223 
   ABC 
   FL 

0

1 răspunsuri

per XML-Definition, if you have more < ACCOUNT>s you need a surrounding tag f.e. < ACCOUNTS> around all the < ACCOUNT>-tags.

if you have that, you can go "into" the child, and you can while() over the ->next nodes.

EDITH: i suppose you use the DOM-modell. But if you have many (!) < ACCOUNT>s, you should swith to SAX for memory reasons. DOM builds a complete (M)apping of the (D)ocument to (O)bjects in memory.

În SAX, construiți o mașină de stat, care este declanșată în timp ce citirea fișierului/memorie este făcută, pentru fiecare etichetă de start și pentru sfârșitul etichetei și datelor.

EDITH 2: if you have to find a special value you should consider to put the key-value (account_no?) into an attribute like < ACCOUNT no="123"> < NAME>< XYZ> < STATE>FL< /STATE> < /ACCOUNT>

0
adăugat
+1 .. vrei să spui că ar trebui să am ceva de genul asta 123 .. 234 ?
adăugat autor dicaprio, sursa
Încă o întrebare pe care am avut-o este, putem valida dacă avem tag-ul de închidere, eticheta are corespunzător? dacă da, ce funcție pot folosi?
adăugat autor dicaprio, sursa
orice referință bună pot citi pentru a înțelege folosind SAX în C?
adăugat autor dicaprio, sursa
Da! am găsit și asta .. http://www.jamesh.id.au/articles/libxml-sax/libxml-sax.‌ html # introduction
adăugat autor dicaprio, sursa
adăugat autor dicaprio, sursa
da. și am făcut un al doilea edith despre asta.
adăugat autor Peter Miehle, sursa
dacă aveți XMLParseDocument() sau ParseMemory (), veți obține o eroare dacă fișierul/memoria nu este validă. Dacă o faci cu SAX, mașina dvs. de stat ar trebui să poată face față acestei situații.
adăugat autor Peter Miehle, sursa
adăugat autor Peter Miehle, sursa