10
votes

Comment lire les données du fichier XML et l'afficher sur la zone de texte dans la langue Delphi

Je suis nouveau dans la langue Delphi, et ici, j'ai un doute, j'ai un fichier XML appelé véhicule.xml.

Il ressemble à ce p>

<data>
<vehicle>
    <type>Car</type>
    <model>2005</model>
    <number>1568</number>
</vehicle>
<vehicle>
    <type>Car</type>
    <model>2009</model>
    <number>1598</number>
</vehicle>
</data>
  • TXTTYPE LI>
  • TXTMODEL LI>
  • txtnumber li> ul>

    Lors du chargement de la page, je souhaite afficher le contenu du véhicule.xml sur la zone de texte comme: p>

    • TXTTYPE = voiture li>
    • txtmodel = 2005 li>
    • txtnumber = "1568" li> ul> p>


0 commentaires

3 Réponses :


5
votes

Vous pouvez lire le fichier XML à l'aide de l'unité MSXML (ou de tout autre analyseur XML).

Il vous donne une structure d'arborescence représentant le fichier XML. Lorsque le véhicule est le nœud supérieur et les trois autres sont les nœuds enfants.

Chaque nœud a une propriété de texte pouvant être utilisée pour obtenir la valeur. Vous pouvez affecter cela aux zones de texte de votre formulaire.

échantillon de code: xxx


1 commentaires

Regardez le composant TXMLDOCUMUMUMUMUMUMUMENT DELPHI au lieu d'accéder directement au moteur MSXML .



18
votes

Consultez le composant TXMLDOCUMUMUMUMUMUMUMUMUMUMUMUMUMUMUMUMUMUMUMTOCLECUMDOCUMUMLECUMDOCUMUMLECUMDOCLECUMTOCUMTOCUMTOCUMTOCUMTOCUMDOCUMTOCLECUMTOCUMTOCLECUMTOCLECUMTOCLECUMTOCLECUMTOCLECUMTOCLEDOCLEDOCLECTES XXX PRE>

Alternativement, utilisez l'interface IXMLDOCUMUMUMENT CODE> (qui TXMLDOCUMUMUMENT CODE> Implements): P>

uses
  ..., XMLIntf, XMLDoc;

procedure TForm1.FormCreate(Sender: TObject);
var
  Doc: IXMLDocument;
  Data: IXMLNode;
  Node: IXMLNode;
  I: Integer;
begin
  Doc := LoadXMLDocument('vehicle.xml');
  Data := Doc.DocumentElement;
  for I := 0 to Data.ChildNodes.Count-1 do
  begin
    Node := Data.ChildNodes[I];
    // if all of the child nodes will always be 'vehicle' only
    // then this check can be removed...
    if Node.LocalName = 'vehicle' then
    begin
      // use Node.ChildNodes['type'], Node.ChildNodes['model'],
      // and Node.ChildNodes['number'] as needed...
    end;
  end;
end;


3 commentaires

Comment ce code choisit-il alors de choisir le deuxième ou le premier véhicule?


@Shaunroselt: Le XML de la question a été modifié après avoir posté cette réponse. Cette réponse a été écrite pour différents XML où l'élément de niveau supérieur était le seul . Maintenant, la structure du XML a été modifiée, le code doit donc être ajusté en conséquence. J'ai mis à jour ma réponse.


@Marcelobergweiler sérieusement? C'est l'heure de ce que j'aimerais pouvoir télécharger des commentaires. Drop A txmldocument dans le formulaire et la clause est remplie automatiquement, comme tout autre composant. Mais peu importe. J'ai mis à jour ma réponse.



-1
votes

SMS Nombre = "1" BACKUP_SET = "B8A1116-9614-41D0-AC5B-EF93C27089CD" Backup_Date = "1605468953370" Type = "Plein">


1 commentaires

Salut Trang, la réponse que vous avez soumise ne contribue pas à la résolution du problème de l'OP