Fórum String de XML #218458
05/03/2004
0
[b:8410845a66][i:8410845a66]
<nome>Danilo Cesar</nome>
<mail>danilo_eu@hotmail.com</mail>
<senha>831caa1b600f852b7844499430ecac17</senha>
<nick>Birilo Nilo</nick>
<cod>0f7f6ab7513432986422eec01fbac9ba</cod>
[/i:8410845a66][/b:8410845a66]
Este resultado eu salvo em uma String fazendo assim.
1 | conector:= TIdHttp.get(´http://servidor.com/xml.php?id=4´) |
Mas então, eu quero acessar somente campo nome, mas não sei como...
Alguém pode me dar uma ajuda?
Abraços, Danilo

Birilo
Curtir tópico
+ 0Posts
05/03/2004
Birilo
Tipo, a String tá assim
1 2 3 4 5 6 7 | [i][b]< usuario id=´4´> < nome >Danilo Cesar</ nome > < mail >danilo_eu@hotmail.com</ mail > < senha >831caa1b600f852b7844499430ecac17</ senha > < nick >Birilo Nilo</ nick > < cod >0f7f6ab7513432986422eec01fbac9ba</ cod > </ usuario >[/b][/i] |
E eu queria acessar aproximadamente assim:
1 | Caixa.text := xml.nome; |
Alguém faz alguma idéia de como fazer isso??
Gostei + 0
05/03/2004
Birilo
1 2 3 4 5 6 7 | < usuario id=´4´> < nome >Danilo Cesar</ nome > < mail >danilo_eu@hotmail.com</ mail > < senha >831caa1b600f852b7844499430ecac17</ senha > < nick >Birilo Nilo</ nick > < cod >0f7f6ab7513432986422eec01fbac9ba</ cod > </ usuario > |
1 | Caixa.text := xml.nome; |
Gostei + 0
05/03/2004
Andrey
Se vc não tiver essas versões do Delphi, acho q vc vai ter q fazer uma rotina pra reconhecer o <nome> e o </nome> e pegar o q tem entre eles!
Gostei + 0
05/03/2004
Birilo
Mas não estou conseguindo retornar o valor.
Estou fazendo assim:
1 | texto.Text := xml.XML.Values[´nome´]; |
onde xml é um XmlDocument
Também tentei com
texto.Text := xml.XML.Values[´usuario/nome´];
Mas ainda não deu certo... O Que fazer?
Gostei + 0
05/03/2004
Andrey
Então dê um active := True e tente:
Texto.Text := XML.DocumentElement.ChildNodes[0].ChildNodes[´nome´].Text
Onde o ChildNodes[0] se refere ao primeiro registro(isso se o seu arquivo XML só tiver este registro) e o ChildNodes[´nome´] se refere ao campo ´nome´ desse registro.
Gostei + 0
05/03/2004
Birilo
1 2 3 | xml.XML.Text := texto.Text; xml.Active:=true; nome.Text := xml.DocumentElement.ChildNodes[0].ChildNodes[´mail´].Text; |
Mas infelizmente não deu certo....
Eu coloco o codigo xml na richtext texto, copio pra dentro do XmlDocument. Depois eu o ativo.
Dae o resultado do DocumentElement eu jogo pra dentro de um text chamado nome, mas não funciona. Ele fica em branco....
O Que eu estou fazendo de errado?
Gostei + 0
05/03/2004
Birilo
Já dei um jeito...
Apenas retirei aquele primeiro ChildNode[0], pois tenho apenas um Node...
Também agora estou fazendo com DOMDocument....
Valeu a ajuda....
Brigadão...
Gostei + 0
06/03/2004
Jasig Aurumalfa
Espero ter ajudado... :wink:
Gostei + 0
06/03/2004
Zacca
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 54 55 56 57 58 | procedure RecebeXML(Sender : tobject); var sr: TSearchRec; i:integer; n: TxmlNode; path1 : string; begin if FRMPrincipal.ArqIni.ReadString(´Path´,´Amostras´,´´)=´´ then path1:=ExtractFilePath(Application.ExeName)+´\Amostras\´ else path1:=FRMPrincipal.ArqIni.ReadString(´Path´,´Amostras\´,´´); if (FindFirst(path1, faAnyFile, sr)=0) then begin repeat Application.ProcessMessages; FRMPrincipal.StatusBar1.Panels[3].Text := ´ Recebendo Amostra: ´+sr.Name; FRMPrincipal.TXMLPasta.Enabled:=false; // começa a utilizar o xml para enviar Parser := TXMLParser.Create; XML := Parser.LoadFile(path1+´\*.xml´+sr.Name); n:= XML[´Paciente/Exames´]; if (Assigned(n)) then begin for i := 1 to n.ChildrenCount do begin DMTabelas.TBTempora.Append; DMTabelas.TBTempora.FieldByName(´Amostra´).asstring := XML[´Paciente/Amostra´].value; DMTabelas.TBTempora.FieldByName(´Nome´).asstring := XML[´Paciente/Nome´].value; DMTabelas.TBTempora.FieldByName(´Sexo´).asstring := XML[´Paciente/Sexo´].value; DMTabelas.TBTempora.FieldByName(´CodPac´).asstring := XML[´Paciente/CodPac´].value; DMTabelas.TBTempora.FieldByName(´Nasc´).asstring := XML[´Paciente/Nascimento´].value; DMTabelas.TBTempora.FieldByName(´Medico´).asstring := XML[´Paciente/Medico´].value; DMTabelas.TBTempora.FieldByName(´Material´).asstring := XML[´Paciente/Material´].value; DMTabelas.TBTempora.FieldByName(´Data´).asstring := XML[´Paciente/Data´].value; DMTabelas.TBTempora.FieldByName(´Hora´).asstring := XML[´Paciente/Hora´].value; if (AnsiSameText(n.Child[i].Name, ´Exame´)) then begin DMTabelas.TBTempora.FieldByName(´Exame´).asstring := n.Child[i].Value; end; DMTabelas.TBTempora.Post; end; end; copyfile(pchar(path1+sr.name),pchar(ExtractFilePath(Application.ExeName)+´Antigo\´+ExtractFilename(sr.name)),true); DeleteFile(path1+ExtractFilename(sr.name)); FRMPrincipal.TXMLPasta.Enabled:=true; until FindNext(sr)<>0; end; end; |
precisa de um componente se quiser madna um email rpa mim...
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)