Ignorar espaco em branco no JDOM

2 respostas
A

Olá! Vejam o código abaixo:

SAXBuilder builder = new SAXBuilder();

Document doc = new Document();

builder.setIgnoringElementContentWhitespace(true);

doc = builder.build(new File(arquivo));

O método setIgnoringElementContentWhitespace(true) aparentemente não está funcionando. Se eu tenho o xml:

<servlet>

<servlet-name>teste</servlet-name>

<servlet-class>teste</servlet-class>

</servlet>

Quando eu vou verificar o doc, o builder carregou uma árvore contendo os espaços em branco entre os elementos, assim:

  • Element: servlet
  • Text: \n
  • Element: servlet-name
  • Text: \n
  • Element: servlet-class

Ou seja, ele tá carregando a quebra de linha, mas eu não quero. Quero que ele carregue apenas os Element.

Algém pode me ajudar? Por favor![i]

2 Respostas

T

Olhando o Javadoc…
[i]
Specifies whether or not the parser should eliminate whitespace in element content (sometimes known as “ignorable whitespace”) when building the document. Only whitespace which is contained within element content that has an element only content model will be eliminated (see XML Rec 3.2.1). For this setting to take effect requires that validation be turned on. The default value of this setting is false.

Parameters:
ignoringWhite - Whether to ignore ignorable whitespace
[/i]

Aham, isso parece conversa de advogado.
Tem um monte de condições para isso funcionar direito:

  • O modo de validação deve estar ligado;
  • O DTD deve especificar que o elemento contenha apenas elementos, não texto.
    Acho que você vai ter de pular esses elementos em branco “na marra”, pelo que estou imaginando.
A

Tem razão!

Como no meu caso, nem todo XML eu teria o DTD pra validar, eu tive que tirar “no braço” os espaços em branco.

Utilizei a classe StringTokenizer que me permitiu elimitar os tokens:
\n - new line
\r - return cartridge
\t - tab

O problema foi que depois eu perdi a identação, mas nada que um Format não resolvesse.

Obrigado pela ajuda.

Criado 15 de dezembro de 2004
Ultima resposta 20 de dez. de 2004
Respostas 2
Participantes 2