xmlファイルの内容を読み取り、その内容をString文字列として変数に格納したいと考えて以下のようなクラスを作成しましたが、出力してみると、最初にnullが入ってしまい、さらに改行位置でスペースが入ってしまいます。nullも入らず、改行位置に\nを追加した形で、変数に入れたいと考えております。
どのようにすればよろしいのでしょうか。
[読み込みxml]
<?xml version="1.0" encoding="UTF-8"?>
<exp:References>
<IDProviderReference RefType="IdProviderReference">
<OID>-2</OID>
<Name>Internal Identity Provider</Name>
<Props/>
<TypeVal>1</TypeVal>
</IDProviderReference>
</exp:References>
[読み取りクラス]
public XMLRead{
public static void main(String args[])throws Exception{
try{
String POLICY;
BufferedReader br = new BufferedReader(new FileReader("読み取りxml"));
String line;
while ((line = br.readLine()) != null) {
POLICY =POLICY+line;
}
br.close();
}catch(Exception e){
System.out.println(e);
}
System.out.println("policy: " + POLICY);
}
}
No.1ベストアンサー
- 回答日時:
import java.io.*;
public class XMLRead{
public static void main(String args[]){
String POLICY ="";
/*
変数POLICYの宣言の位置がおかしいと思ったので移動。
また,Stringの初期値がnullなため、最初にnullが入ってしまうようだ
*/
try{
BufferedReader br = new BufferedReader(new FileReader("hoge.xml"));
/*
XMLファイルにBOMが入っていると最初の出力が変に見えるかも
元のXMLファイルを読み込ませたらFirefox(正確にはMinefieldがエラー吐いた。「名前空間接頭辞に名前空間が割り当てられてない」って。
*/
String line;
while ((line = br.readLine()) != null) {
POLICY =POLICY+line + "\n";
/*改行を追加。特に半角空白の空きは見られなかった。XML系のReaderを使うとそうなることもあるかもしれないが、それならそれはXMLの仕様。
ブラウザの話をさせてもらえるなら
FirefoxやOperaは改行を空白文字として連続した空白文字を半角一つに変換するが,IEは要素内容とみなすのか半角空白は生成しない。どちらも許されていたと思う。
*/
}
br.close();
}catch(Exception e){
System.out.println(e);
}
System.out.println("policy: " + POLICY);
}
}
No.2
- 回答日時:
おまけ:
http://www.atmarkit.co.jp/fjava/rensai3/mojibake …
つーことでUTF-8で日本語書くと文字化けします(Windows-31Jで読んでたからBOMがあんな形で出力されたのかも。まぁこのコードでもBOMがあると?がつくんですが。)
import java.io.*;
public class XMLRead{
public static void main(String args[]){
String POLICY ="";
/*
変数POLICYの宣言の位置がおかしいと思ったので移動。
また,Stringの初期値がnullなため、最初にnullが入ってしまうようだ
*/
try{
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("hoge.xml"), "UTF-8")); /* 日本語が含む可能性がある場合、こうしておくべき */
/*
XMLファイルにBOMが入っていると最初の出力が変に見えるかも
元のXMLファイルを読み込ませたらFirefox(正確にはMinefieldがエラー吐いた。「名前空間接頭辞に名前空間が割り当てられてない」って。
なので、名前空間接頭辞の宣言を足しておいてほしい。検証時には削除しちゃったけど(ぉ
*/
String line;
while ((line = br.readLine()) != null) {
POLICY =POLICY+line + "\n";
/*改行を追加。特に半角空白の空きは見られなかった。XML系のReaderを使うとそうなることもあるかもしれないが、それならそれはXMLの仕様。
ブラウザの話をさせてもらえるなら
FirefoxやOperaは改行を空白文字として連続した空白文字を半角一つに変換するが,IEは要素内容とみなすのか半角空白は生成しない。どちらも許されていたと思う。
*/
}
br.close();
}catch(Exception e){
System.out.println(e);
}
System.out.println("policy: " + POLICY);
}
}
No.3
- 回答日時:
この回答への補足
XMLの構造を解析するならSAX/DOMを使うのですが、そうではなくString文字列として扱いたいので、BufferReaderを使ったのですが、SAX/DOMでも同様なことができるのでしょうか?
補足日時:2007/05/12 03:08お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java final 1 2022/06/10 22:49
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- アプリ Android studio 初心者 Hello Android!しか表示されない 1 2023/08/01 08:47
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- C言語・C++・C# C# で、あるフォルダー内にあるすべてのテキストファイルを別のフォルダーにコピーする。 4 2022/11/21 13:23
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
yyyymmddからyyyy/mm/d...
-
equalsの逆
-
[JAVA]エラーが解決できません。
-
九九を横に表示する。
-
入力文字列が数字かどうかの判別
-
csv出力について
-
Java int sum = 0は必要ですか?
-
URL\正規表現@java
-
Javaでデータに登録する度にID...
-
eclipseでmysqlからテーブル情...
-
応用情報技術者試験の令和元年...
-
1~100までの数字を表示し、か...
-
ループ処理の際、最後だけ","を...
-
Javaで改行などが出来ないのです。
-
ダブルクォーテーションのrepla...
-
C言語のポインターに関する警告
-
JSPやサーブレットでSystem.out...
-
配列にnullを代入すると、null...
-
n番目に大きな値を探索する
-
java キーボード入力された値の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
yyyymmddからyyyy/mm/d...
-
equalsの逆
-
csv出力について
-
九九を横に表示する。
-
InputStream.read()でタイムア...
-
テキストファイルから空白行をよむ
-
Java int sum = 0は必要ですか?
-
javaのfor文が機能してないみた...
-
BufferedReaderでのエラー
-
Javaの質問です。テキストファ...
-
以下のJAVAプログラムでご質問...
-
Class.forNameでエラーになる
-
ソケットを使ったサーバとクラ...
-
テキストファイルにおいて任意...
-
テキストファイルの任意の文字...
-
JAVAでエラーがでる。
-
Inputstreamについて
-
ObjectInputStreamとStreamCorr...
-
Windowsでの標準入力の終了の仕方
-
[JAVA]エラーが解決できません。
おすすめ情報