Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Comment fonctionne TXmlDocumment ????


Sujet :

C++Builder

  1. #1
    Débutant
    Comment fonctionne TXmlDocumment ????
    Bonjour tout le monde,

    Le vilain pitit cannard des posts de [débutant] est de retour
    Je voie déjà vôtre réjouissance à, encore une fois, me dire que je veux faire compliquer mais c'est comme ça que j'avance moi 8)

    Voila je compte stoquer dans un fichier xml, le nombre de lignes, le nombres de colonnes la largeur des colonnes et si possible le contenu d'un tableau. Je compte aussi le relire dans le meme programme 8) . J'ai déjà regardé cotès XML comment organiser mes balises.

    Cependant si j'ai à peut pret compris comment se crée un .xml au niveau de sa mise en balise, je ne sait pas comment utiliser TXmlDocument ni même l'employer faute de doc, de tuto et de faq

    Dommage, ca pourait être utile

    Si on peut m'aider
    D'avance merci

  2. #2
    Rédacteur

    bonsoir

    pour le XML tu peut faire un tour a:

    http://sourceforge.net/users/tpsfadmin/

    telecharge "XML Partner"

    et bien sur lit la document qui est avec, ainsi que les exemples

    Bon courrage

    Alain

  3. #3
    Débutant
    Y a pas plus simple que XML partner ?

    Car je pensait que TXmlDocument suffisait moi

    Comme j'aime pas trop le bricolage genre rajouter des choses que je ne connais pas bien a Borland je ne peux donc pas explorer cette possibilité la.... En plus moi et l'anglais ca fais mais alors vrent 2

    C'est le moin que je puis dire...... Ralala

    Bref borland est donc pas complet si jen juge au lien que j'ai visité !

    Merci encore pour ce lien

    Amicalement

  4. ###raw>post.musername###
    Membre à l'essai
    Je suis moi aussi en train de travailler sur les TXMLDocument.

    Voilà comment j'ai compris la chose :

    Pour créer un noeud (une balise quoi), utilise "AddChild" sur ton document.

    Pour créer ou modifier la valeur d'un attribut de ta balise : "SetAttribute"

    Pour mettre du texte entre deux balises utilises "Text".

    Quelques exemples :
    Ouverture de ton document (si il existe) !
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
     
    XMLDocument1->LoadFromFile(rep_appli+"\\machin.xml");
    XMLDocument1->Active=true; // Modification possible...


    Puis après tu pointes le premier noeud, ou celui que tu veux avec :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    _di_IXMLNode MonNoeud=XMLDocument1->DocumentElement->ChildNodes->Nodes[WideString("MonNoeud")];


    ou
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    _di_IXMLNode MonNoeud=XMLDocument1->DocumentElement->ChildNodes->GetNode(0);


    Puis, par exemple

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    MonNoeud->SetAttribute(WideString("public"),WideString("true"));


    Ou

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    _di_IXMLNode MonSousNoeud=MonNoeud->AddChild(WideString("MonSousNoeud"),-1);


    etc...

    Fait des essais et le F1 !
      0  0

  5. #5
    Membre éclairé
    Pour utiliser TXMLDocument :-) c'est pas facile facile, sinon, tu as des EAccessViolation :-)

    1) CoInitialize (NULL);

    XMLDocument1->FileName = "";
    XMLDocument1->Active = true;
    XMLDocument1->Encoding="UTF-8";

    XMLDocument1->DocumentElement = XMLDocument1->CreateElement ("BaliseXMLPere", "");
    _di_IXMLNode node = XMLDocument1->DocumentElement->AddChild ("PremiereBalise");

    .... bla bla ....

    Fin du brol ->

    XMLDocument1->SaveToFile ("fichier.xml");

    XMLDocument1->Active = false;

    3) CoUninitialize ();
    Nul ne peut mieux connaitre la connaissance qu'elle-même.

  6. #6
    Membre à l'essai
    Citation Envoyé par swirtel
    Pour utiliser TXMLDocument :-) c'est pas facile facile, sinon, tu as des EAccessViolation :-)

    1) CoInitialize (NULL);

    XMLDocument1->FileName = "";
    XMLDocument1->Active = true;
    XMLDocument1->Encoding="UTF-8";

    XMLDocument1->DocumentElement = XMLDocument1->CreateElement ("BaliseXMLPere", "");
    _di_IXMLNode node = XMLDocument1->DocumentElement->AddChild ("PremiereBalise");

    .... bla bla ....

    Fin du brol ->

    XMLDocument1->SaveToFile ("fichier.xml");

    XMLDocument1->Active = false;

    3) CoUninitialize ();
    Quel est l'intérêt du CoUninitialize (); et de son corollaire du début ?

  7. #7
    Rédacteur

    Bonjour,

    CoInitialize sert à initiliser la bibliothèque COM pour le thread courant. CoUninitialize ferme cette bibliothèque, décharge les DLL COM, ....

    Cordialement,

    Arnaud

  8. #8
    Membre à l'essai
    Ce qui est curieux, c'est que chez moi ça fonctionne sans l'ouverture de ces bibliothèques ????

  9. #9
    Rédacteur

    Il est possible que XMLDocument le gère en interne.

###raw>template_hook.ano_emploi###