6

組み込みのJavaXMLTransformerを使用して、XMLドキュメントをテキストにシリアル化します。しかし、HTMLモードで出力しているときに問題が発生します。

要素を挿入するたびにhead、組み込みのトランスフォーマーがMETAコンテンツタイプのデータを含むタグを挿入することを決定します。データ内にこのタグを含めたくないので、この機能を無効にする出力パラメーターが見つからないようです。xsltスタイルシートを作成して問題のタグを削除できることはわかっていますが、トランスフォーマー自体にパラメーターを設定してそれを無効にすることができれば、より簡単になります。

あなたは「しかし、あなたは本当にこのタグを持っているべきです」と答えるかもしれません-私を信じてください、私はそれを必要としません、簡潔にするために私はそれには入りません。

サンプルコード

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

戻り値

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

META適切な例として、そのタグは必要ありません。可能な限り最も簡単な方法でそれを取り除くにはどうすればよいですか?

アップデート:

{http://xml.apache.org/xalan}omit-meta-tag私は私が探していることをすることになっているオプションに出くわしました。しかし、それは無視されているようです。

4

3 に答える 3

6

以下に追加してみてください:

trans.setOutputProperty(OutputKeys.METHOD, "xml");
trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
于 2011-02-26T12:47:34.080 に答える
3

"{http://xml.apache.org/xalan}omit-meta-tag"組み込みのJava変換では無視されているように見えるため、これは複雑な状況です。

したがって、簡単な答えは、xalanjのようなものをダウンロードして、手動でクラスパスに配置することです。

于 2009-09-11T06:30:47.000 に答える
0

Java 8 u 131では、

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

期待どおりに機能しているようです

于 2017-06-28T09:45:36.200 に答える