Substituição de strings  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
renatosilva
GUJ Master

Membro desde: 16/12/2004 17:09:19
Mensagens: 1787
Offline

Alguém sabe o que posso usar para criar uma função que substitui strings?

Eu preciso:
- verificar se a string possui quebras de linha e sua posição
- se tiver eu substituo suas ocorrências por uma quebra mais dois espaços, com exceção da última quebra

É um código de indentação que preciso:

Onde isso


Vira isso
Lucas Teixeira
Java Ninja
[Avatar]

Membro desde: 11/12/2003 10:47:22
Mensagens: 269
Localização: São Paulo - SP
Offline

sera que nao funcionaria o



[]s

Lucas F. A. Teixeira .·.
lucastex no gmail com
lucastex.com/twitter
[Email] [MSN]
aborges
GUJ Ranger
[Avatar]

Membro desde: 08/10/2003 11:44:19
Mensagens: 818
Localização: Caçapava - SP
Offline

Resolveria... Mas temos q ver q o problema dele eh mais embaixo...

Com ele esta trabalhando com XML, deve-se lembrar q ele pode ter N níveis de hierarquia....

Ele ira utilizar o replaceAll, mas vai precisar de uma logicazinha...

This message was edited 1 time. Last update was at 22/12/2004 13:58:46


Linux é que nem sexo, quem não conheçe diz que dói
Alexandre Borges
[Email] [WWW]
volnei
JavaEvangelist
[Avatar]

Membro desde: 29/01/2003 11:36:27
Mensagens: 354
Offline

renato3110 wrote:Alguém sabe o que posso usar para criar uma função que substitui strings?

Eu preciso:
- verificar se a string possui quebras de linha e sua posição
- se tiver eu substituo suas ocorrências por uma quebra mais dois espaços, com exceção da última quebra

É um código de indentação que preciso:

Onde isso


Vira isso



Se você estiver querendo formatar arquivos XML aconselho você a dar uma olhada na API JDom, é só abrir um arquivo e salvá-lo e a identação fica do jeito que você definir.


Volnei Granado Munhoz

[Email] [MSN]
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

Com certeza tem jeitos mais bonitos, porém:

Former LIPE.
[ICQ]
renatosilva
GUJ Master

Membro desde: 16/12/2004 17:09:19
Mensagens: 1787
Offline

Caros colegas

Lucas, ajudará bastante o replaceAll

aborges, você está correto, vou precisar de iterações, mas já "sei" como fazer isso. O problema está sendo a parte "atômica" dessa operação, que é essa identação simples que mostrei.

volnei, gostei de sua idéia, mas o problema é que o XML é gerado no código e não oriundo de um arquivo. E se fosse possível queria evitar criar a estrutura DOM (memória!) apenas para indentar.

Será que existe alguma API que indente uma string XML, preferencialmente sem consumir mais memória do que o interressante?

Caso exista será interessante para mim, pois poderei gerar o XML sem indentações e quebras de linha, e dar um comando simples a essa API para identação.

Caso não exista, acho que prefiro usar o replaceAll na marra e o código do LIPE...

Por falar em quebras de linha, alguém sabe se o Java 1.4.2 possui quebra multiplataforma (parece que o Tiger tem o %n)?
Como inserir uma quebra de linha Windows 13+10?

O "\n" que estou usando só gera o caracter 10 (quebra do Linux)
volnei
JavaEvangelist
[Avatar]

Membro desde: 29/01/2003 11:36:27
Mensagens: 354
Offline

renato3110 wrote:
volnei, gostei de sua idéia, mas o problema é que o XML é gerado no código e não oriundo de um arquivo. E se fosse possível queria evitar criar a estrutura DOM (memória!) apenas para indentar.


O JDom tambem tem o SAXParser


Volnei Granado Munhoz

[Email] [MSN]
renatosilva
GUJ Master

Membro desde: 16/12/2004 17:09:19
Mensagens: 1787
Offline

Você pode me dar um exemplo simples de identação?

O JDom é API padrão do Java ou externa?
volnei
JavaEvangelist
[Avatar]

Membro desde: 29/01/2003 11:36:27
Mensagens: 354
Offline

renato3110 wrote:Você pode me dar um exemplo simples de identação?

O JDom é API padrão do Java ou externa?


Externa!

www.jdom.org (aqui tambem tem exemplos)

Volnei Granado Munhoz

[Email] [MSN]
renatosilva
GUJ Master

Membro desde: 16/12/2004 17:09:19
Mensagens: 1787
Offline

Pode me dar um exemplo de indentação?

Esse JDom é API padrão do Java ou externa?
renatosilva
GUJ Master

Membro desde: 16/12/2004 17:09:19
Mensagens: 1787
Offline

Aí volnei, acho que consegui com o replaceAll

A lógica de iterações foi meio complicada mesmo

Estou criando uma parada para gerar XML, tipo o inverso do Apache Commons Digester, eis um exemplo:



Que gera a seguinte saída:


E chamando setIndentText(True) a saída é:


Alguém interessado?
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team