2009-09-11 9 views
5

Utilizzo il Java XML Transformer integrato per serializzare un documento XML in testo. Tuttavia, sto riscontrando un problema quando eseguo l'output in modalità HTML.Come impedire a Java XML Transformer di utilizzare il metodo "HTML" aggiungendo il tag <META>?

Ogni volta che inserisco un elemento head, il trasformatore incorporato decide di inserire un tag META con dati di tipo contenuto. Non voglio questo tag nei miei dati e non riesco a trovare un parametro di output che disabiliti questa funzione. So che potrei creare un foglio di stile xslt e rimuovere il tag in questione, ma sarebbe più semplice essere in grado di impostare un parametro sul trasformatore stesso che lo disabilita.

Si potrebbe rispondere con "ma si dovrebbe davvero avere questo tag" - fidati di me, non ne ho bisogno, per brevità, non entrerò in esso.

codice di esempio

Document d; 
//d = <html><head><title></title></head><body></body></html> 

Transformer t; //properly inited with no xslt specified 

t.setOutputProperty(OutputKeys.METHOD,"html"); 
t.setOutputProperty(OutputKeys.INDENT,"no"); 
t.transform(new DOMSource(d), result); 

System.out.println(result); 

rendimenti

<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title></title><style type="text/css"></style></head><body></body></html> 

caso in questione, non voglio che META tag lì. Come posso liberarmene nel modo più semplice possibile?

UPDATE:

ho eseguito attraverso l'opzione {http://xml.apache.org/xalan}omit-meta-tag che dovrebbe fare quello che sto cercando. Tuttavia sembra che sia stato ignorato.

+0

set ** ** xml valore OutputKeys.METHOD. – adatapost

+0

deve essere html per quello che sto facendo – Mike

+1

Questo è il comportamento standard in base a XSLT '[specifiche] (http://www.w3.org/TR/xslt#section-HTML-Output-Method) ed è richiesto da browser se usi un'altra codifica di caratteri rispetto a quella predefinita. –

risposta

2

Questa è una situazione complicata, poiché sembra che lo "{http://xml.apache.org/xalan}omit-meta-tag" sia ignorato nella trasformazione java integrata.

Quindi la risposta breve è scaricare qualcosa come xalanj e inserirlo manualmente nel classpath.

+4

Se lo fai, dovrai assicurarti di inserirlo nella directory approvata, in modo che sostituisca la versione integrata in Java. Vedi http://java.sun.com/javase/6/docs/technotes/guides/standards/ per i dettagli. –

4

Prova aggiunto di seguito:

trans.setOutputProperty(OutputKeys.METHOD, "xml"); 
trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); 
0

Con Java 8 u 131,

transformer.setOutputProperty("{http://xml.apache.org/xalan}omit-meta-tag", "yes"); 

sembra funzionare come previsto

Problemi correlati