<?xml version="1.0"?>
<rubrica>
<computer>127.0.0.1</computer>
<user>Utente</user>
<contatto>
<nome>Giulio</nome>
<indirizzo>
<via>Via Roma 7</via>
<citta>Genova</citta>
</indirizzo>
<email>us...@domain.com</email>
<tel>0123456789</tel>
<fax>9876543210</fax>
</contatto>
</rubrica>
tramite il seguente codice:
XMLDoc.FileName := 'c:\pp.xml';
XMLDoc.Active:=True;
StartItemNode:=XMLDoc.DocumentElement.ChildNodes.FindNode('contatto');
ANode := StartItemNode;
STitle := ANode.ChildValues['nome'];
sLink := ANode.ChildNodes['email'].Text;
sDesc := ANode.ChildNodes['tel'].Text;
showmessage(STitle);
showmessage(sLink);
showmessage(sDesc);
riesco a leggere nome,email,tel ma non so come fare per leggere il
contenuto di computer,user e i dati del contatto all'interno di
indirizzo.
Mi sapete dare una dritta?
Grazie a tutti
>Ciao a tutti,
Ciao
>ho provato senza successo a leggere in file xml per poi
>importarlo in una tabella di un database.
>ho usato il componente XMLDocument di delphi7 ma riesco a leggere solo
>alcuni dati.
>[...]
>XMLDoc.FileName := 'c:\pp.xml';
>XMLDoc.Active:=True;
>StartItemNode:=XMLDoc.DocumentElement.ChildNodes.FindNode('contatto');
>ANode := StartItemNode;
>STitle := ANode.ChildValues['nome'];
>sLink := ANode.ChildNodes['email'].Text;
>sDesc := ANode.ChildNodes['tel'].Text;
>[...]
>Mi sapete dare una dritta?
bè ... forse hai già provato e sto dicendo una fesseria
... anche perchè io non l'ho provato ... ma credo che
sia la stessa cosa di quello che fai per il contatto
... dovresti partire da
>StartItemNode:=XMLDoc.DocumentElement.ChildNodes.FindNode('rubrica');
>ANode := StartItemNode;
>STitle := ANode.ChildValues['computer'];
>sLink := ANode.ChildNodes['user'].Text;
>etc
essendo un file xml, in pratica, una struttura ad
albero di nested tag, dovresti poter usare la stessa
modalita di visita che hai usato per il nodo contatto.
>Grazie a tutti
Ciao
MassimoB
---------------------------
http:\\www.massimobeschi.it
Anch'io ho avuto la stessa necessitą proprio la settimana scorsa. Infatti
dovevo
importare un file .XML contenente gli ordini provenienti da Web.
Siccome perņ con gli strumenti di Delphi non ci ho capito niente e non avevo
il tempo per mettermeli a studiare perchč dovevo consegnare il programma con
urgenza ho fatto una cosa un po' diversa.
Praticamente mi sono detto che un file .XML altri non č che un banalissimo
file
di testo, quindi, me lo sono importato in una StringList e poi mi sono letto
il
contenuto della string list per passarlo sul database.
Ho fatto quindi una cosa del genere :
OrdiniTxt := TStringList.Create;
OrdiniTxt.LoadFromFile( 'c:\ordini.xml' );
for j := 0 to OrdiniTxt.Count - 1 do
begin
if ....
if ....
ecc ...
end;
E' sicuramente una cosa molto artigianale, ma ti posso garantire che
funziona alla perfezione.
Spero di esserti stato utile.
Donato Di Tullio
var
n: IXMLNode;
begin
//computer
n := XMLDocument1.DocumentElement.ChildNodes[0];
Edit1.Text := n.Text;
//user
n := XMLDocument1.DocumentElement.ChildNodes[1];
Edit2.Text := n.Text;
//contatto->nome
n := XMLDocument1.DocumentElement.ChildNodes[2];
Edit3.Text := n.ChildNodes[0].Text;
//contatto->indirizzo->via
n := XMLDocument1.DocumentElement.ChildNodes[2];
Edit4.Text := n.ChildNodes[1].ChildNodes[0].Text;
//contatto->indirizzo->città
n := XMLDocument1.DocumentElement.ChildNodes[2];
Edit5.Text := n.ChildNodes[1].ChildNodes[1].Text;
//contatto->email
n := XMLDocument1.DocumentElement.ChildNodes[2];
Edit6.Text := n.ChildNodes[2].Text;
//contatto->tel
n := XMLDocument1.DocumentElement.ChildNodes[2];
Edit7.Text := n.ChildNodes[3].Text;
//contatto->fax
n := XMLDocument1.DocumentElement.ChildNodes[2];
Edit8.Text := n.ChildNodes[4].Text;
end;
> Grazie a tutti
--
Ciao, Anto', [37, 143, AQ]
MB C SC 220 CDI Magma Rot
"Di sempre cio' che senti e fai cio' che pensi."
G.G. Màrquez
[cut]
;o)
oppure cosi:
begin
Edit1.Text := XMLDocument1.DocumentElement.ChildNodes['computer'].Text;
Edit2.Text := XMLDocument1.DocumentElement.ChildNodes['user'].Text;
Edit3.Text :=
XLDocument1.DocumentElement.ChildNodes['contatto'].ChildNodes['nome'].Text;
Edit4.Text :=
XMLDocument1.DocumentElement.ChildNodes['contatto'].ChildNodes['indirizzo'].ChildNodes['via'].Text;
Edit5.Text :=
XMLDocument1.DocumentElement.ChildNodes['contatto'].ChildNodes['indirizzo'].ChildNodes['citta'].Text;
Edit6.Text :=
XMLDocument1.DocumentElement.ChildNodes['contatto'].ChildNodes['email'].Text;
Edit7.Text :=
XMLDocument1.DocumentElement.ChildNodes['contatto'].ChildNodes['tel'].Text;
Edit8.Text :=
XMLDocument1.DocumentElement.ChildNodes['contatto'].ChildNodes['fax'].Text;
end;