
No.3
- 回答日時:
入力はBufferedReaderとありますが、
出力には何を使っているのでしょうか?
HTMLの本文として<br />があるのでしたら、
実体参照になっているのは元々ではありませんか?
実体参照にエスケープされているのを元に戻すライブラリ(参考URL参照)もありますが、
そもそも読み込んだまま出力しているなら、エスケープされないはずです。
参考URL:http://commons.apache.org/lang/api-release/org/a …
この回答への補足
htmlのファイルから内では<br /> が存在し、BufferedReaderで読み込んだ時点
でも<br />となっていることをEclipse上のデバッグモードで確認しています。
読み込んだHTMLの内容をXMLで出力しております。
下記のサンプルプログラムはBufferedReaderでHTMLを読み込む処理は
省略したものですがXML出力時に<br>,<a>のタグがエスケープ文字に
置き換えられることが確認できます。
public static void main(String[] args) throws Exception {
Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
Element elementEmployers = document.createElement("employers");
Element elementEmployer = document.createElement("employer");
Element elementEmployerName = document.createElement("name");
Text txtEmployerName = document.createTextNode("三浦 太郎");
elementEmployerName.appendChild(txtEmployerName);
elementEmployer.appendChild(elementEmployerName);
Element elementEmployerAge = document.createElement("age");
Text txtEmployAge = document.createTextNode("<br><a>>26</a>");
elementEmployerAge.appendChild(txtEmployAge);
elementEmployer.appendChild(elementEmployerAge);
elementEmployers.appendChild(elementEmployer);
document.appendChild(elementEmployers);
TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer transformer = TransformerFactory.newInstance().newTransformer();
//インデントを行う
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
//インデントの文字数
transformer.setOutputProperty(OutputPropertiesFactory.S_KEY_INDENT_AMOUNT,"4");
DOMSource source = new DOMSource(document);
File newXML = new File("c:\\newXML.xml");
FileOutputStream os = new FileOutputStream(newXML);
StreamResult result = new StreamResult(os);
transformer.transform(source, result);
}
}
No.2
- 回答日時:
自分でエスケープ処理をしていないのに勝手にエスケープされることなんてあるのでしょうか。
現象を再現できる最小限のファイルの内容とコードを提示できますか?
御回答ありがとうございます。遅くなりましたが、No.3さんの補足の
ところにも記載いたしましたが以下が現象を再現できる最小限のコードに
なります。XMLで出力するとエスケープ文字に置き換えられてしまいます。
public static void main(String[] args) throws Exception {
Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
Element elementEmployers = document.createElement("employers");
Element elementEmployer = document.createElement("employer");
Element elementEmployerName = document.createElement("name");
Text txtEmployerName = document.createTextNode("三浦 太郎");
elementEmployerName.appendChild(txtEmployerName);
elementEmployer.appendChild(elementEmployerName);
Element elementEmployerAge = document.createElement("age");
Text txtEmployAge = document.createTextNode("<br><a>>26</a>");
elementEmployerAge.appendChild(txtEmployAge);
elementEmployer.appendChild(elementEmployerAge);
elementEmployers.appendChild(elementEmployer);
document.appendChild(elementEmployers);
TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer transformer = TransformerFactory.newInstance().newTransformer();
//インデントを行う
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
//インデントの文字数
transformer.setOutputProperty(OutputPropertiesFactory.S_KEY_INDENT_AMOUNT,"4");
DOMSource source = new DOMSource(document);
File newXML = new File("c:\\newXML.xml");
FileOutputStream os = new FileOutputStream(newXML);
StreamResult result = new StreamResult(os);
transformer.transform(source, result);
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
System.err. printlnとSystem.o...
-
1~100までの数字を表示したい
-
streamで送信されたArrayListを...
-
flush()とclose()について
-
Javaで改行などが出来ないのです。
-
1~100までの数字を表示し、か...
-
サーブレットのログ出力先
-
System.out.printlnの出力先
-
Log4jで機能毎に別ファイルへ出...
-
Java ストリームをわかりやす...
-
system.out.printが出力されない
-
HTMLタグのエスケープ文字をタ...
-
JavaScriptを使ってロト6の当...
-
Eclipseのコンソールを常に表示...
-
サーブレットになったJSPの文字...
-
JavaScriptとVBScriptに関して
-
eclipseでコンソールのピン留め...
-
JavaScriptの変数をjavaのメソ...
-
文字の順番を昇順に
-
Tomcatが無応答となる現象が起...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
System.err. printlnとSystem.o...
-
flush()とclose()について
-
Log4jで機能毎に別ファイルへ出...
-
System.out.printlnの出力先
-
Javaで改行などが出来ないのです。
-
system.out.printが出力されない
-
一定のスペースを空けて端を揃...
-
Tomcatが無応答となる現象が起...
-
1~100までの数字を表示し、か...
-
ジャバスクリプトについて。
-
switch分が機能しません。
-
Log4Jではログを改行できない?
-
System.out.printlnの意味がよ...
-
OpenSSL関数エラーについて
-
テキストエリアで改行する
-
プールとスプールの違いがわか...
-
VBAでEUC-JPのHTMLソースを取得...
-
Javaで任意のパスへ任意のファ...
-
JAVAのServletで、画像表示につ...
-
Eclipseのコンソールを常に表示...
おすすめ情報