Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [DelphiXE2] manipolare file XML

    Salve a tutti,
    uso DelphiXE2 e devo manipolare un file XML cambiando i valori dei nodi.

    Ho caricato il tracciato usando TXMLDocument, ma come faccio a settare i 4 valori CDATA che i nodi si chiamano tutti uguali? Ho provato a guardare l'help ma non ci sono saltato fuori... javascript:void(0);

    <wpostmeta>
    <wp:meta_key>et_id</wp:meta_key>
    <wp:meta_value><![CDATA[1234]]></wp:meta_value>
    </wpostmeta>
    <wpostmeta>
    <wp:meta_key>et_codice</wp:meta_key>
    <wp:meta_value><![CDATA[1234]]></wp:meta_value>
    </wpostmeta>
    <wpostmeta>
    <wp:meta_key>et_regione</wp:meta_key>
    <wp:meta_value><![CDATA[Emilia Romagna]]></wp:meta_value>
    </wpostmeta>
    <wpostmeta>
    <wp:meta_key>et_provincia</wp:meta_key>
    <wp:meta_value><![CDATA[Modena]]></wp:meta_value>
    </wpostmeta>

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    I nodi si chiamano allo stesso modo, ed è anche abbastanza normale, ma ciascun tag wpostmeta contiene una wp:meta_key diversa, per cui puoi effettuare la distinzione in base a quello.

    Che codice hai scritto sino a ora?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    La procedura che ho scritto finora è la seguente:

    procedure TfmXML.ManipolaXML;
    var
    ANodeItem: IXMLNode;
    begin
    XMLDoc.FileName := 'C:\temp\tracciato.xml';
    try

    XMLDoc.Active := True;

    ANodeItem := XMLDoc.DocumentElement;
    ANodeItem := ANode.ChildNodes.FindNode('et_id');

    ANodeItem.ChildNodes.FindNode('wp:meta_value').Nod eValue := '1234'; <---- ERRORE
    ?????? questa istruzione mi da errore. Come faccio a cambiare il valore di wp:meta_value ??????

    except

    on e: Exception do
    ShowMessage('Errore xml: ' + e.Message);

    end;
    XMLDoc.SaveToFile('C:\temp\risultato.xml');
    XMLDoc.Active := False;
    end;

    Mi restituisce errore nel NodeValue. Di solito per i nodi singoli faccio così e va bene, ma in questi mi restituisce errore e non so come fare

  4. #4
    Hai provato con il tool XML Mapper di delphi ?
    Dovresti riuscire a trasformare il tuo xml in modo da essere letto dal ClientDataSet
    N.

  5. #5
    Non ho nessun tool XML Mapper installato. In ogni caso penso basti un comando per scrivere quel dato che mi serve senza usare tool particolari.

    Il problema è che non ci salto fuori... :-(((

  6. #6
    Se non ricordo male il tool XML Mapper lo trovi nel menù di Delphi sotto la voce tools, oppure lo trovi nella cartella \Bin di Delphi sotto il nome di "xmlmapper.exe".
    XML Mapper ti trasforma il tuo xml in modo "leggibile" al componente ClientDataSet, una volta dato in pasto il file XML al componente ClientDataSet, lo tratti come un semplice DB.
    N.

    Ma se non hai installato il tools ... allora .. nin so

  7. #7
    Perchè se scrivo l'istruzione

    LNode.ChildNodes.Add(LDocument.CreateNode('wp:base _site_url', ntElement))

    non mi restituisce alcun errore ma mi formatta tutto l'xml scritto fino a quel momento. Ho testato che il problema sono i : (due punti) dentro al nome del nodo. Però nello schema che devo seguire le chiavi sono tutte "wp: e poi qualcosa...

    Come devo fare????

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 © 2025 vBulletin Solutions, Inc. All rights reserved.