existe sim como fazer isso, me envie email em pvt que te mostro um exemplo.
rod escreveu: > Olá a todos > > Estou desenvolvendo uma aplicação que precisa enviar um xml para o governo > estadual, e estou usando o TXmlDocument, do RAD 2007 (Delphi). > Consigo criar os nós de acordo com o schema estabelecido pelo governo. > Porém, há a necessidade de incluir mais dados de uma determinada tag: > > Tag com uma pessoa > <partes> > <parte> > <cpf_cnpj>11111111111</cpf_cnpj> > <nome>CARLOS DA SILVA PEREIRA</nome> > <rg>1542184</rg> > <rguf>PR</rguf> > <tipoJuridico>F</tipoJuridico> > <tipoParte>PAS</tipoParte> > </parte> > </partes> > > Tag com Duas pessoas > <partes> > <parte> > <cpf_cnpj>11111111111</cpf_cnpj> > <nome>CARLOS DA SILVA PEREIRA</nome> > <rg>1542184</rg> > <rguf>PR</rguf> > <tipoJuridico>F</tipoJuridico> > <tipoParte>PAS</tipoParte> > </parte> > <parte> > <cpf_cnpj>22222222222</cpf_cnpj> > <nome>MARIA APARECIDA TEIXEIRA</nome> > <rg>1542841</rg> > <rguf>PR</rguf> > <tipoJuridico>F</tipoJuridico> > <tipoParte>PAS</tipoParte> > </parte> > </partes> > > O problema é que pelo código do componente, quando tento incluir a segunda > pessoa, essa segunda sobreescreve, ficando o xml como o exemplo de uma > pessoa só. > Minha dúvida: Há um comando específico do TXmlDocument, onde indico que > vou incluir no node partes mais pessoas, sem sobreescrever o existente? > Obs: Não estou usando dataset, é apenas esse TXmlDocument para gerar a xml. > > Parte do código > > procedure TForm3.bt2Click(Sender: TObject); > var > NodeDadosProcesso, NodePartes, NodeAutores, NodeReus, NodeAdvogados : > IXMLNode; > xmldoc2 : TXMLDocument; > begin > > try > xmldoc2 := TXMLDocument.Create(Self); > xmldoc2.Options := > [doNodeAutoCreate,doNodeAutoIndent,doAttrNull,doAutoPrefix,doNamespaceDecl]; > xmldoc2.NodeIndentStr:=' '; > > with xmldoc2 do > begin > Active := True; > Version := '1.0'; > Encoding := 'UTF-8'; > AddChild('processo'); > DocumentElement.Attributes['xmlns:xsi'] := > 'http://www.w3.org/2001/XMLSchema-instance'; > NodeDadosProcesso := DocumentElement; > NodeDadosProcesso.AddChild('dataAutuacao');// := '2009-01-08' ; > NodeDadosProcesso.AddChild('codigoComarca');// := '2009-01-08' ; > NodeDadosProcesso.AddChild('codigoUnidadeOrigem'); > NodeDadosProcesso.AddChild('codigoTipoCompetencia'); > NodeDadosProcesso.AddChild('numeroProtocolo'); > NodeDadosProcesso.AddChild('sistemaTribunal'); > NodeDadosProcesso.AddChild('tipoDistribuicao'); > NodeDadosProcesso.AddChild('codigoServentiaDistribuicao'); > NodeDadosProcesso.AddChild('dataDistribuicao'); > NodeDadosProcesso.AddChild('numeroProcedimentoMinisterioPublico'); > NodeDadosProcesso.AddChild('segredoJustica'); > NodeDadosProcesso.AddChild('valorAcao'); > NodeDadosProcesso.AddChild('codigoClasseProcessual'); > NodeDadosProcesso.AddChild('codigoAssuntoPrincipal'); > > {partes - reu x autor} > NodePartes := DocumentElement; > NodePartes.AddChild('partes'); > NodePartes.ChildNodes['partes'].AddChild('parte'); > NodePartes.ChildNodes['partes'].ChildNodes['parte'].AddChild('cpf_cnpj'); > NodePartes.ChildNodes['partes'].ChildNodes['parte'].AddChild('nome'); > NodePartes.ChildNodes['partes'].ChildNodes['parte'].AddChild('rg'); > NodePartes.ChildNodes['partes'].ChildNodes['parte'].AddChild('rguf'); > > NodePartes.ChildNodes['partes'].ChildNodes['parte'].AddChild('tipoJuridico'); > NodePartes.ChildNodes['partes'].ChildNodes['parte'].AddChild('tipoParte'); > > {inserir os dados} > NodeDadosProcesso.ChildValues['dataAutuacao'] := > FormatDateTime('YYYY-MM-DD',now); > NodeDadosProcesso.ChildValues['codigoComarca'] := '57';// := '2009-01-08' > ; //foz > NodeDadosProcesso.ChildValues['codigoUnidadeOrigem'] := '56'; > NodeDadosProcesso.ChildValues['codigoTipoCompetencia'] := '1'; //civel > NodeDadosProcesso.ChildValues['numeroProtocolo']:= '00028'; > NodeDadosProcesso.ChildValues['sistemaTribunal']:= 'KAN'; > NodeDadosProcesso.ChildValues['tipoDistribuicao']:= 'AUT'; > NodeDadosProcesso.ChildValues['codigoServentiaDistribuicao']:='705'; > //Primeira Vara Cível > NodeDadosProcesso.ChildValues['dataDistribuicao']:= > FormatDateTime('YYYY-MM-DD',now); > NodeDadosProcesso.ChildValues['numeroProcedimentoMinisterioPublico']; > NodeDadosProcesso.ChildValues['segredoJustica'] := '0'; > NodeDadosProcesso.ChildValues['valorAcao']:='13.00'; > NodeDadosProcesso.ChildValues['codigoClasseProcessual']:='2'; > NodeDadosProcesso.ChildValues['codigoAssuntoPrincipal']:='899'; > > {partes - reu x autor} > > > NodePartes.ChildNodes['partes'].ChildNodes['parte'].ChildValues['cpf_cnpj']:='11111111111'; > > NodePartes.ChildNodes['partes'].ChildNodes['parte'].ChildValues['nome']:='MARIA > > TEREZA ROCHA'; > NodePartes.ChildNodes['partes'].ChildNodes['parte'].ChildValues['rg']:='9345435'; > > NodePartes.ChildNodes['partes'].ChildNodes['parte'].ChildValues['rguf']:='PR'; > > NodePartes.ChildNodes['partes'].ChildNodes['parte'].ChildValues['tipoJuridico']:='F'; > > NodePartes.ChildNodes['partes'].ChildNodes['parte'].ChildValues['tipoParte']:='ATI'; > NodePartes.ChildNodes['partes'].ChildNodes['parte'].NextSibling; > > {OUTRO REU} > NodeReus := NodePartes.ChildNodes['partes']; > NodeReus.ChildNodes['parte'].ChildValues['cpf_cnpj']:='11111111111'; > NodeReus.ChildNodes['parte'].ChildValues['nome']:='CARLOS DA SILVA > PEREIRA'; > NodeReus.ChildNodes['parte'].ChildValues['rg']:='1542184'; > NodeReus.ChildNodes['parte'].ChildValues['rguf']:='PR'; > NodeReus.ChildNodes['parte'].ChildValues['tipoJuridico']:='F'; > NodeReus.ChildNodes['parte'].ChildValues['tipoParte']:='PAS'; > > memo1.Lines.Text := xml.GetText; > > > end; > finally > FreeAndNil(xmldoc2); > end; > end; > >