2009-09-11 3 views
5

Ich verwende den integrierten Java XML Transformer, um ein XML-Dokument in Text zu serialisieren. Ich habe jedoch ein Problem, wenn ich im HTML-Modus ausgabe.Wie verhindere ich, dass der Java XML Transformer mit der "HTML" -Methode <META> Tags hinzufügt?

Immer wenn ich ein Element head einfüge, entscheidet der eingebaute Transformator, ein META Tag mit Inhaltstypdaten einzufügen. Ich möchte dieses Tag nicht in meinen Daten haben und ich kann keinen Ausgabeparameter finden, der diese Funktion deaktiviert. Ich weiß, ich könnte ein XSLT-Stylesheet erstellen und das fragliche Tag entfernen, aber es wäre einfacher, nur einen Parameter auf dem Transformer selbst zu setzen, der es deaktiviert.

Sie könnten antworten mit "aber Sie sollten wirklich dieses Tag haben" - vertrauen Sie mir, ich brauche es nicht, aus Gründen der Schnelligkeit werde ich nicht darauf eingehen.

Beispielcode

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); 

kehrt

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

Typischer Fall, ich will nicht, dass META dort Tag. Wie kann ich es auf die einfachste Art und Weise loswerden?

UPDATE:

ich über die Option ausgeführt haben {http://xml.apache.org/xalan}omit-meta-tag das tun soll, was ich suche. Es scheint jedoch, als ob es ignoriert wird.

+0

Satz ** xml ** Wert von OutputKeys.METHOD zu arbeiten. – adatapost

+0

es muss HTML sein für das, was ich tue – Mike

+1

Das ist Standard-Verhalten nach XSLT '[specs] (http://www.w3.org/TR/xslt#section-HTML-Output-Method) und es wird von benötigt Browser, wenn Sie einen anderen Zeichensatz als den Standardcode verwenden. –

Antwort

2

Dies ist eine komplizierte Situation, wie es scheint, die "{http://xml.apache.org/xalan}omit-meta-tag" wird in der integrierten Java-Transformation ignoriert.

Also die kurze Antwort ist, etwas wie xalanj herunterzuladen und es in Ihren Klassenpfad manuell zu setzen.

+4

Wenn Sie das tun, müssen Sie sicherstellen, dass Sie es in das unterstützte Verzeichnis einfügen, so dass es die in Java eingebaute Version überschreibt. Einzelheiten finden Sie unter http://java.sun.com/javase/6/docs/technotes/guides/standards/. –

4

Versuchen unten hinzugefügt:

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

Mit Java 8 u 131,

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

scheint wie erwartet