Metode scriere/citire fisiere XML

Intrebari despre programarea cu VC++ incluzand mediul de dezvoltare, instalare, setari, debugger, compilator, linker si documentatie.
User avatar
black_atus
Membru
Membru
Posts: 139
Joined: 20 Jun 2012, 10:20
Judet: Prahova
Location: Ploiesti

Metode scriere/citire fisiere XML

Post by black_atus » 29 Nov 2012, 14:06

Buna ziua,

Am avut de implemetat un export in fisier xml si am folosit "CStdioFile" cu care practic scriam ca si intr-un txt doar ca i-am pus extensia .xml si a mers. Codul este structurat frumos si usor de parcurs.

Intrebarea mea este care ar fi cea mai buna metoda de scris un fisier xml ?

La scriere cred ca merge metoda cu "CStdioFile" dar cred ca daca as face citirea intr-un mod asemanator ar fi destul de complicat.
La citire ce metoda ar fi cel mai simplu de utilizat ? Ma intereseaza una cu cat mai putine linii de cod de scris.

Am cautat pe internet si am gasit destule metode si exemple dar nu stiu pe care as putea sa o folosesc.

Apreciez orice sfat.
Multumesc anticipat!


Cu stima,
Daniel Constantin

mesajflaviu
Membru++
Membru++
Posts: 684
Joined: 10 Sep 2008, 21:40
Judet: Cluj

Re: Metode scriere/citire fisiere XML

Post by mesajflaviu » 29 Nov 2012, 14:48

Iti recomand clasa folosita aici, CMarkup, am folosit-o de multe ori fara probleme ...

User avatar
zlatomir
Membru++
Membru++
Posts: 282
Joined: 04 Jul 2009, 23:59
Location: Arad
Contact:

Re: Metode scriere/citire fisiere XML

Post by zlatomir » 29 Nov 2012, 14:53

Parerea mea e ca cea mai buna metoda depinde de ce biblioteci folosesti in aplicatia ta, de ex in MFC din cate stiu nu ai clase/functii pt parsare de xml, deci daca nu mai folosesti si alte biblioteci (ex boost)trebuie sa te gandesti daca merita sa adaugi la dependinte ceva de genul tinyXml( sau boost sau alta biblioteca xml) sau iti scri serializarea pt ce ai tu nevoie, pana la urma cred ca numai tu poti sti care e varianta cea mai buna, noi doar iti putem da cateva sugestii.

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3776
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: Metode scriere/citire fisiere XML

Post by Ovidiu Cucu » 29 Nov 2012, 15:22

Intradevar, MFC nu contine clase/metode de parsare XML insa, ca sa nu-l murdaresti cu boost sau balarii culese din CP sau de aiurea, MS iti pune la dispozitie mai multe alternative dintre care:
  • Microsoft XML Parser (MSXML), o componenta COM pentru cei cu mari pretentii;
  • XmlLite, usor de utilizat si vine la pachet cu Visual Studio, incuzand cateva proiecte demo.

Vezi

User avatar
black_atus
Membru
Membru
Posts: 139
Joined: 20 Jun 2012, 10:20
Judet: Prahova
Location: Ploiesti

Re: Metode scriere/citire fisiere XML

Post by black_atus » 03 Dec 2012, 16:52

Buna ziua

Pare simplu de folosit "CMarkup" dar trebuie sa folosesc ceva de la Microsoft din pacate. :(

Incerc sa folosesc xml DOM (IXMLDOMDocumentPtr) pentru scrierea si citirea unui fisier xml. Intampin ceva probleme pentru ca la fiecare cautare pe internet gasesc alte solutii. Incerc sa gasesc cea mai simpla implementare folosind xml DOM si speram sa ma ajutati in directia asta cu un link spre un exemplu concret, complet. Vreau sa invat cum se foloseste si imi trebuie un tutorial. Majoritatea celor gasite parca ma afunda mai rau in ceata... O multime de clase.. de functii..nici nu stiu ce sa folosesc..
Trebuie sa existe o metoda mai simpla de parsat un fisier xml decat cele gasite de mine.

Pare ca ma complic mult mai mult asa decat folosind "CStdioFile"...

Presupunand ca am urmatorul xml:

<?xml version="1.0" ?>
<Librarie>
<carte1>Titlu carte 1</carte1>
<carte2>Titlu carte 2</carte2>
<carte3>Titlu carte 3</carte3>
</Librarie>

Care ar fi cea mai simpla metoda sa salvez intr-un vector CString valorile dintre tag-uri folosind un parser de la Microsoft ?

Multumesc anticipat.
Cu stima,
Daniel Constantin

User avatar
bu7ch3r
Membru++
Membru++
Posts: 326
Joined: 17 May 2011, 15:17
Judet: Iaşi
Location: Sofia
Contact:

Re: Metode scriere/citire fisiere XML

Post by bu7ch3r » 03 Dec 2012, 22:00

Iata salvarea: http://msdn.microsoft.com/en-us/library ... s.85).aspx
url Microsoft
nume fancy
COM in descriere
xml in descriere
ghid
cod exemplu pentru copy-pastea

Xml-ul pe care l-ai prezentat tu acolo nu e prea istet, eu n-as pune noduri: carte 1,2,3 ... niciodata (as pune doar carte).
Exemplul tau il parsezi cu 2 linii de cod, fara "parser de la Microsoft"
Cu stima,
Lupu Claudiu

User avatar
Marius Bancila
Fondator
Fondator
Posts: 2343
Joined: 11 Jul 2007, 11:45
Judet: Timiş
Location: Timisoara
Contact:

Re: Metode scriere/citire fisiere XML

Post by Marius Bancila » 04 Dec 2012, 00:32

Cum zicea si Claudiu, nu vad nici un motiv pentru care ai avea trei taguri diferite (sau general vorbind) pentru carti. Unul singur, <carte> e suficient.
Marius Bancila
Fondator Codexpert, Microsoft MVP VC++
Site personal | Blog

User avatar
black_atus
Membru
Membru
Posts: 139
Joined: 20 Jun 2012, 10:20
Judet: Prahova
Location: Ploiesti

Re: Metode scriere/citire fisiere XML

Post by black_atus » 04 Dec 2012, 09:49

bu7ch3r wrote:Iata salvarea: http://msdn.microsoft.com/en-us/library ... s.85).aspx
url Microsoft
nume fancy
COM in descriere
xml in descriere
ghid
cod exemplu pentru copy-pastea

Xml-ul pe care l-ai prezentat tu acolo nu e prea istet, eu n-as pune noduri: carte 1,2,3 ... niciodata (as pune doar carte).
Exemplul tau il parsezi cu 2 linii de cod, fara "parser de la Microsoft"
Ala era doar un exemplu. XML-ul pe care vreau sa il parsez are cateva sute de linii.
Inteleg ce vrei sa-mi zici cu nodurile. In exemplul meu nu pot folosi un ciclu cu care sa parsez toate valorile cum as putea face daca as avea 10 noduri <carte> de exemplu.
Majoritatea tag-urilor sunt diferite.
Multumesc pt raspuns.:)
Cu stima,
Daniel Constantin

User avatar
bu7ch3r
Membru++
Membru++
Posts: 326
Joined: 17 May 2011, 15:17
Judet: Iaşi
Location: Sofia
Contact:

Re: Metode scriere/citire fisiere XML

Post by bu7ch3r » 04 Dec 2012, 11:05

Pai ar trebui sa ai ceva de genu:

Code: Select all

<Librarie>
    <carte>
        <Titlu>Miorita</Titlu>
        <Autor>Mihai Eminescu</Autor>
        <An>2014</An>
        <Editura>Meteora</Editura>
    </carte>
.......
    <carte>
        <Titlu>Thinking in C++</Titlu>
        <Autor>Bruce Waine</Autor>
        <An>2000</An>
        <Editura>Nemira</Editura>
    </carte>
</Librarie>
Cu libraria aia o sa faci ceva de genu: pentru fiecare carte din librarie afiseaza-mi titlu autorul anul editura.
Daca incerci sa faci ceva dinamic si super flexibil si configurabil si scalabil atunci afla ca ai ales formatul gresit - xml e batut destul de bine in cuie. Din fericirea ai o schema cu care sa poti scoate cuiele, dar asta e alta poveste.
Cu stima,
Lupu Claudiu

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3776
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: Metode scriere/citire fisiere XML

Post by Ovidiu Cucu » 04 Dec 2012, 11:53

black_atus wrote: Ala era doar un exemplu. XML-ul pe care vreau sa il parsez are cateva sute de linii.
Inteleg ce vrei sa-mi zici cu nodurile. In exemplul meu nu pot folosi un ciclu cu care sa parsez toate valorile cum as putea face daca as avea 10 noduri <carte> de exemplu.
Majoritatea tag-urilor sunt diferite.
Daca majorotatea tagurilor sunt diferite atunci de ce s-a mai chinuit un "architect" cu ele? "XML" suna mai cool?
Un flat file, text de la mama lui si fara taguri ar fi fost suficient. Si l-ai fi putut "parsa" simplu in MFC, cu CStdioFile plus CString::Tokenize.

viorel2005
Membru
Membru
Posts: 208
Joined: 24 May 2008, 09:41

Re: Metode scriere/citire fisiere XML

Post by viorel2005 » 05 Dec 2012, 08:50

insa, ca sa nu-l murdaresti cu boost sau balarii culese din CP sau de aiure
Boost e o librarie respectabila. Recunosc ca nu am folosit-o, dar are avantajul portabilitatii.
Plus ca trebuie sa ai niste ani de experienta buni ca sa programezi o librarie ca boost.
Nu inteleg cu ar fi "murdarit" aplicatia o astfel de librarie. De exemplu Adobe a creat
o librarie de prelucrat imagini folosind tot templates. Sa renunti la o librarie bazata pe sabloane
in favoarea unei alte librarii bazate pe tehnologia COM unde mai intalnesti si instructiunea antica
goto pusa intr-un #define nu stiu cat de buna este recomandarea.

User avatar
black_atus
Membru
Membru
Posts: 139
Joined: 20 Jun 2012, 10:20
Judet: Prahova
Location: Ploiesti

Re: Metode scriere/citire fisiere XML

Post by black_atus » 05 Dec 2012, 09:50

Ovidiu Cucu wrote:
black_atus wrote: Ala era doar un exemplu. XML-ul pe care vreau sa il parsez are cateva sute de linii.
Inteleg ce vrei sa-mi zici cu nodurile. In exemplul meu nu pot folosi un ciclu cu care sa parsez toate valorile cum as putea face daca as avea 10 noduri <carte> de exemplu.
Majoritatea tag-urilor sunt diferite.
Daca majorotatea tagurilor sunt diferite atunci de ce s-a mai chinuit un "architect" cu ele? "XML" suna mai cool?
Un flat file, text de la mama lui si fara taguri ar fi fost suficient. Si l-ai fi putut "parsa" simplu in MFC, cu CStdioFile plus CString::Tokenize.
Mi se cere export si import in xml deoarece datele exportate sunt folosite intr-o aplicatie facuta in java.
De ce au ales tocmai formatul asta e probabil deoarece la aplicatia in java e deja implementata partea de import/export de xml.
Cu stima,
Daniel Constantin

User avatar
Marius Bancila
Fondator
Fondator
Posts: 2343
Joined: 11 Jul 2007, 11:45
Judet: Timiş
Location: Timisoara
Contact:

Re: Metode scriere/citire fisiere XML

Post by Marius Bancila » 05 Dec 2012, 13:05

Viorel, boost nu e o librarie, ci o biblioteca. Vezi http://en.wikipedia.org/wiki/False_friend.
Marius Bancila
Fondator Codexpert, Microsoft MVP VC++
Site personal | Blog

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3776
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: Metode scriere/citire fisiere XML

Post by Ovidiu Cucu » 05 Dec 2012, 13:19

...iar COM (Component Object Model) nu-i nici librarie, nici biblioteca. Si n-are nici o legatura cu "instructiunea antica goto pusa intr-un #define " care cine stie pe unde o mai fi vazut-o un linuxist dand un google search. ;)

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3776
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: Metode scriere/citire fisiere XML

Post by Ovidiu Cucu » 05 Dec 2012, 13:29

black_atus wrote: Mi se cere export si import in xml deoarece datele exportate sunt folosite intr-o aplicatie facuta in java.
De ce au ales tocmai formatul asta e probabil deoarece la aplicatia in java e deja implementata partea de import/export de xml.
Banuiam eu. Iar daca design-ul la XML l-o facut un javaman, atunci e clar... :D
In fine, reluind problema de la cap si pornind de la faptul ca folosesti MFC, cea mai usoara optiune, zi eu, este XmlLite.

Post Reply