
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...
-
数字文字列をパック10進数に変...
-
System.out.printlnの意味がよ...
-
flush()とclose()について
-
switch分が機能しません。
-
C言語のポインターに関する警告
-
式の型は配列型で int に解決済...
-
ループ処理の際、最後だけ","を...
-
IF関数でEmpty値を設定する方法。
-
メインが含まれていません
-
変数を動的に利用するには?
-
誰か~誰か~誰か~一生のお願...
-
テキストボックスに入力された...
-
プログラミングの問題です。大...
-
繰り返しによる星印の出力
-
javaのプログラミングについて...
-
ORA-01858: 数値を指定する箇所...
-
大量のデータを読み込んで表示...
-
同じ配列またはクラスを、2回...
-
Label を リスナーと結びつけ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
System.err. printlnとSystem.o...
-
flush()とclose()について
-
System.out.printlnの出力先
-
system.out.printが出力されない
-
Log4jで機能毎に別ファイルへ出...
-
1~100までの数字を表示したい
-
1~100までの数字を表示し、か...
-
一定のスペースを空けて端を揃...
-
Javaで改行などが出来ないのです。
-
テキストエリアで改行する
-
Eclipseのコンソールを常に表示...
-
Tomcatが無応答となる現象が起...
-
InputStreamはreadが1回しかで...
-
VBAでEUC-JPのHTMLソースを取得...
-
JavaScriptの変数をjavaのメソ...
-
switch分が機能しません。
-
java for文、if文を使っての三角形
-
Javaで任意のパスへ任意のファ...
-
JavaScriptでcgiの戻り値を受け...
-
tomcatのstdout.logを停止したい。
おすすめ情報