6 Stimmen

Wie verhindere ich, dass der Java XML Transformer, der die Methode "HTML" verwendet, den <META>-Tag hinzufügt?

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 ausgeben will.

Wann immer ich eine head Element beschließt der eingebaute Transformator, ein META Tag mit Content-Type-Daten. Ich möchte nicht, dass dieses Tag in meinen Daten enthalten ist, und ich kann keinen Ausgabeparameter finden, mit dem sich diese Funktion deaktivieren lässt. Ich weiß, dass ich ein Xslt-Stylesheet erstellen und das betreffende Tag entfernen könnte, aber es wäre einfacher, einen Parameter auf dem Transformator selbst zu setzen, der es deaktiviert.

Sie werden vielleicht antworten: "Aber Sie sollten dieses Etikett wirklich haben" - glauben Sie mir, ich brauche es nicht, ich werde es nicht weiter ausführen.

Beispiel-Code

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

gibt zurück.

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

Ein Beispiel: Ich will nicht, dass die META Tag dort. Wie werde ich es auf einfachste Weise los?

UPDATE:

Ich bin auf die Option {http://xml.apache.org/xalan}omit-meta-tag die das tun soll, wonach ich suche. Es scheint jedoch, als ob es ignoriert wird.

6voto

Sajad Punkte 61

Versuchen Sie es unten hinzugefügt:

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

4voto

Mike Punkte 56156

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

Die kurze Antwort ist also, etwas wie xalanj herunterzuladen und es manuell in den Klassenpfad aufzunehmen.

0voto

mjn Punkte 35903

Mit Java 8 u 131,

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

scheint wie erwartet zu funktionieren

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X