Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,315

    [DELPHI] Leggere i valori di un nodo XML

    Ciao a tutti,

    devo leggere dei valori scritti in un determinato nodo di un file xml.
    codice:
    dovrei leggere questo:
    <root>
          <testa>
                ........
          </testa>
          <body>
                <1>
                  <mio Valore 1.1>
                  <mio Valore 1.2>
                  <mio Valore 1.3>
                  <mio Valore 1.4>
                </1>
                <2>
                  <mio Valore 2.1>
                  <mio Valore 2.2>
                  <mio Valore 2.3>
                  <mio Valore 2.4>
                 </2>
          </body>
    </root>
    
    perfavore, qualcuno mi potrebbe suggerire come leggere i valori
                  <mio Valore 1.1>
                  <mio Valore 1.2>
                  <mio Valore 1.3>
                  <mio Valore 1.4>

    grazie
    Ultima modifica di 123delphi321; 22-12-2018 a 10:47

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Per leggere un documento XML, puoi usare il componente TXMLDocument.

    Per sapere come usarlo, studia questo esempio completo riportato nella documentazione ufficiale.

    Non so se il file che hai riportato è puramente esemplificativo, ma dubito che possa essere considerato un file XML valido, dato che vi sono spazi nei nomi degli elementi, numeri al posto di lettere, ecc.

    Comunque sia, proviamo a semplificare prendendo un esempio più pulito e più intuitivo, come quello riportato qui nella guida di W3CSchool.

    Se volessi ad esempio leggere tutti i titoli dei libri e scriverli in un TMemo, seguiti dalla lingua corrispondente, userei un codice simile a questo (non ottimizzato, ma utile per capire):

    codice:
    var
      BookStore: IXMLNode;
      BookNodeList: IXMLNodeList;
      BookNode, TitleNode: IXMLNode;
      I: Integer;
    begin
      Memo1.Clear;
      XMLDocument1.LoadFromFile('E:\Temp\Sample.xml');
      BookStore := XMLDocument1.DocumentElement;
      if BookStore.LocalName = 'bookstore' then
      begin
        BookNodeList := BookStore.ChildNodes;
        for I := 0 to BookNodeList.Count - 1 do
        begin
          BookNode := BookNodeList.Get(I);
          TitleNode := BookNode.ChildNodes.FindNode('title');
          Memo1.Lines.Add(TitleNode.Text);
          Memo1.Lines.Add(TitleNode.AttributeNodes.FindNode('lang').Text);
        end;
      end;
    end;

    Il componente TXMLDocument può essere trascinato dalla toolbox dei componenti, oppure creato a runtime dinamicamente al momento del bisogno, con la classica forma

    codice:
    XMLDoc := TXMLDocument.Create(nil);
    try
      // ... uso il componente come sopra...
    finally
      XMLDoc.Free;
    end;

    Leggi la documentazione e prova a interpretare gli esempi rapportandoli al file XML che devi leggere.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,315
    grazie Alka!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.