Dúvida em Streams

4 respostas
cesarcneto

Ola Povo tudo blz!?!?

Seguinte tenho a classe:

import javax.xml.transform.*;
import javax.xml.transform.stream.*;

public class XMLTransformer {

	public static void transform(File xmlFile, File xsltFile) {
		if(!xmlFile.isFile()){
			throw new IllegalAccessError("O arquivo " + xmlFile.getName() + " não existente no local especificado. " + 
					xmlFile.getAbsolutePath());
		}else if(!xsltFile.isFile()){
			throw new IllegalAccessError("O arquivo " + xsltFile.getName() + " não existente no local especificado. " + 
					xsltFile.getAbsolutePath());
		}
		Source xmlSource = new StreamSource(xmlFile);
		Source xsltSource = new StreamSource(xsltFile);
		TransformerFactory transFact = TransformerFactory.newInstance();
		
		try {
			Templates cachedXSLT = transFact.newTemplates(xsltSource);
			Transformer trans = cachedXSLT.newTransformer();
			trans = transFact.newTransformer(xsltSource);
			trans.setOutputProperty(OutputKeys.ENCODING,"UTF-8");
			trans.setOutputProperty(OutputKeys.INDENT, "yes");
			trans.setOutputProperty(OutputKeys.METHOD, "html");
			trans.transform(xmlSource, new StreamResult());
		} catch (TransformerConfigurationException e) {
			e.printStackTrace();
		} catch (TransformerException e) {
			e.printStackTrace();
		}
	}
}

E gostaria de sugestões para fazer com que este método fosse capaz de retornar uma String pois não quero que a saída do conteudo do arquvio seja em system.out . Será que fui claro!??! Espero que sim!!!

Abraços e até mais,

4 Respostas

dudaskank

Acho que assim já funcionaria:

trans.transform(xmlSource, new StreamResult(new File("saida.txt"));

Veja que na classe StreamResult existem outros construtores além deste.

cesarcneto

Primeiro, agradeço pela intenção.

Só que é o seguinte, a minha intenção é que o método retorne uma String pois será essa String que irei exibir em uma página JSP, entende!?!?

A idéia, num futuro próximo, é transformar esta Classe que mostrei acima para um JavaBean e então setar as propriedades nome dos arquivos e depois dar um get na string que será o HTML gerado deste método.

Espero que ainda possam me ajudar. pois, por questão de desempenho, acredito que executar o método transform e depois contruir um string a partir da leitura de um arquivo texto tornaria o processo um tanto quanto lento.

Aguardo maiores informações…
Abraço,

T

Você pode pensar ao contrário. Em vez de você RETORNAR uma String, você pode RECEBER como parâmetro uma OutputStream que você pode passar, dentro de sua rotina, a um construtor de StreamResult. E a OutputStream pode ser, por exemplo, a saída do seu JSP.

cesarcneto

Pô Kra, se desse para você colocar um trecho de código para exemplificar isso que você esta dizendo eu ficaria muito grato!!!

Abraço,

Criado 9 de fevereiro de 2007
Ultima resposta 9 de fev. de 2007
Respostas 4
Participantes 3