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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- C言語・C++・C# 至急お願いします。C言語で.imgのファイルを読み込んで1バイトづつ出力するプログラムを作りたいので 3 2023/01/16 22:49
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- Visual Basic(VBA) VBAでPowerPointからExcelにレイアウト通りに出力する 4 2023/07/05 12:22
- その他(ブラウザ) テキストの折り返しがないサイトの文字を折り返してPDF化したい 4 2022/12/02 09:49
- HTML・CSS HTMLタグのあるCSVファイルを利用する方法 4 2023/03/19 14:41
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
flush()とclose()について
-
System.err. printlnとSystem.o...
-
Log4jで機能毎に別ファイルへ出...
-
Javaで改行などが出来ないのです。
-
1~100までの数字を表示したい
-
一定のスペースを空けて端を揃...
-
1~100までの数字を表示し、か...
-
Eclipseのコンソールを常に表示...
-
週単位の日付の加算
-
ダブルクォーテーション(””)...
-
Tomcatが無応答となる現象が起...
-
switch分が機能しません。
-
eclipseでコンソールのピン留め...
-
数字文字列をパック10進数に変...
-
system.out.printが出力されない
-
テキストエリアで改行する
-
System.out.printlnの出力先
-
javaのwhile文で九九の表
-
JAVAのServletで、画像表示につ...
-
VBAでEUC-JPのHTMLソースを取得...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
System.err. printlnとSystem.o...
-
1~100までの数字を表示し、か...
-
Javaで改行などが出来ないのです。
-
Log4jで機能毎に別ファイルへ出...
-
1~100までの数字を表示したい
-
flush()とclose()について
-
System.out.printlnの出力先
-
ジャバスクリプトについて。
-
system.out.printが出力されない
-
Eclipseのコンソールを常に表示...
-
System.out.printlnの意味がよ...
-
一定のスペースを空けて端を揃...
-
switch分が機能しません。
-
Tomcatが無応答となる現象が起...
-
javaのwhile文で九九の表
-
Javaの問題なのですが、 永久ル...
-
JavaScriptの変数をjavaのメソ...
-
テキストエリアで改行する
-
StringBufferで改ページ処理を...
-
VBSエラー"オブジェクト型の変...
おすすめ情報