Bonjour,

j'essaye actuellement de créer et d'ouvrir un document XML grâce à C++Builder.

J'ai bien trouver le TXMLDOcument et n'arrette pas de lire l'aide de builder sur l'utilisation de ce composant.

J'arrive actuellement à créer le document et à écrire dedans (meme si je pense que c'est fait un peu n'importe comment) mais je n'arrive pas à recupérer des données d'un documents xml existant.

J'essaye pourtant ce que l'aide me dit mais je m'y perds les pinceaux et je ne sais pas par où vraiment débuter.

Pourrriez vous m'aidez me donner quelques conseils, liens ou exemples ? (les liens en français de preférences)


merci d'avance pour votre aide.


Voila pour le moment le code mon application.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 
//---------------------------------------------------------------------------
void __fastcall TForm1::Ouvrir1Click(TObject *Sender)
{
   if (OpenDialog1->Execute())
   {
    CoInitialize (NULL);
    XMLDocument1->LoadFromFile(OpenDialog1->FileName);
   }
   else
   {
    MessageDlg("Problème pour l'ouverture des fichiers", mtWarning, TMsgDlgButtons() << mbOK, 0);
   }
 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Sauvegarder1Click(TObject *Sender)
{
   XMLDocument1->SaveToFile();
   CoUninitialize ();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
   AnsiString texte = "Banzai";
   XMLDocument1->DocumentElement = XMLDocument1->CreateElement("fichier","");
   _di_IXMLNode composants = XMLDocument1->DocumentElement->AddChild("composants");
   for(int i=0; i<12; i++)
   {
   _di_IXMLNode composant = composants->AddChild("composant");
   composant->SetAttribute("num", i);
   _di_IXMLNode nom         = composant->AddChild("nom");
   nom->SetNodeValue(texte);
   _di_IXMLNode valeur      = composant->AddChild("valeur");
   _di_IXMLNode reference   = composant->AddChild("reference");
   _di_IXMLNode fabricant   = composant->AddChild("fabricant");
   _di_IXMLNode designation = composant->AddChild("designation");
   }
 
}
//---------------------------------------------------------------------------
 
 
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
_di_IXMLNode Noeud=XMLDocument1->DocumentElement->ChildNodes->GetNode(0);
_di_IXMLNode SNoeud=Noeud->ChildNodes->GetNode(0);
_di_IXMLNode Name=SNoeud->ChildNodes->GetNode(0);
Memo1->Text = (AnsiString)Name->GetNodeName() + Name->GetNodeValue();
 
}
//---------------------------------------------------------------------------
J'arrive maintenant à sortir le nom d'un noeud et sa valeur.

mais ca ne marche que si j'ouvre le document XML sans faire de modification dedans. Sinon j'ai un EAccesViolation.

Pourriez vous m'aidez... ?