Ir para conteúdo
Fórum Script Brasil
  • 0

Como indentar XML com TXMLDocument


JosimarZ

Pergunta

Boa tarde colegas!

Tenho uma dúvida sobre como indentar meus códigos XML gerados com o TXMLDocument.

Já fiz alterações das propriedades NodeIndentStr e Options do objeto TXMLDocument mas não funcionou.

Eis o código do construtor da classe. (A classe extende TXMLDocument):

constructor TMeuXML.Create(AOwner: TComponent);
begin
   inherited Create(AOwner);
   Self.Options := Self.Options + [doNodeAutoIndent]; // Indentar sim
   // Aqui nesta propriendade já tentei outros valores com #9 (código de tabulação), mas sem sucesso
   Self.NodeIndentStr := '   '; // Caractere para indentação do XML
end;
Para salvar o documento eu uso:
Self.SaveToFile(sFilePath);

Porém, na hora de abrir o XML o cabeçalho aparece na primeira linha,

e o Node Root ba segunda linha indentado corretamente.

O restante do XML fica tudo na mesma linha sequencialmente.

O que está acontecendo ?

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0
  • 0

Olá Jhonas!

Infelizmente esse artigo não utiliza a classe TXMLDocument.

Vou tentar explicar o que estou fazendo na minha aplicação:

Eu tenho vários dados. Eu salvo esses dados em uma estrutura XML utilizando a classe TXMLDocument.

Após salvar todos os dados necessários eu utilizo o método SaveToFile da classe TXMLDocument.

O arquivo XML é salvo perfeitamente, mas sem a identação. Fica numa disposto em uma única linha.

Logicamente eu consigo ler os dados novamente.

A questão é mais de organização do que funcionamento.

Já andei vasculhando na internet e a documentação da classe TXMLDocument é bastante escassa.

De qualquer forma ficarei atento as postagens.

Obrigado!

Link para o comentário
Compartilhar em outros sites

  • 0
O arquivo XML é salvo perfeitamente, mas sem a identação. Fica numa disposto em uma única linha.

última tentativa:

altere as propriedades do xmldocument

nodeident para <tab>

e options do

nodeautoindente para true

e o seu xml fica identado

...................................................................................

outras alternativas de pesquisa

http://japs.etc.br/category/programacao/page/3/

http://weblogs.pontonetpt.com/smoreira/posts/26400.aspx

http://www.macoratti.net/vbn5_xtv.htm

http://wiki.freepascal.org/XML_Tutorial/pt

http://forum.imasters.uol.com.br/index.php?showtopic=320091

http://www.swise.com.br/uploads/cursovs/VbNet/06-01.pdf

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Olá JacsonL!

Infelizmente ainda não consegui resolver este problema, mas descobri algo que pode ser útil.

Se você dar uma passeada na Unit XMLDoc vai encontrar o procedimento:

procedure TXMLNodeList.Insert(Index: Integer; const Node: IXMLNode);
Este procedimento é usado para inserir linhas no documento XML e no seu corpo percebe-se o uso do atributo IndentStr, que é aquela propriedade onde definidos qual será o caractere de tabulação que desejamos utilizar. Para usar esse função bastaria fazer:
MeuXML.DocumentElement.ChildNodes.Insert(Index, XMlNode);

Ainda não tive oportunidade para utilizar essa função. Mas assim que possível vou testá-la. Ficarei aguardando sua resposta também.

Mas o que eu realmente quero fazer é utilizar o método SaveToFile e conseguir efetuar a edentação.

Saudações!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...