- ベストアンサー
ファイルの読み取り方法と出力結果について
- XMLファイルの内容をString文字列として変数に格納する方法について質問があります。
- 現在のコードでは、出力結果が望ましくない形で表示されるため、修正方法について教えてください。
- また、ハッシュタグにも意識的にSEOを考慮したものを付け加えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
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); } }
その他の回答 (2)
- PED02744
- ベストアンサー率40% (157/390)
http://www.hellohiro.com/xmlsax.htm XMLを扱うのなら素直にSAXかDOMを使った方が良い様に思います。 単に属性を取り出すだけなら、とても簡単ですし。
- himajin100000
- ベストアンサー率54% (1660/3060)
おまけ: http://www.atmarkit.co.jp/fjava/rensai3/mojibake03/mojibake03.html つーことで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); } }
お礼
基本的なことでも親切に答えていただきまして本当にありがとうございます。 とてもわかりやすく、理解できました。
補足
XMLの構造を解析するならSAX/DOMを使うのですが、そうではなくString文字列として扱いたいので、BufferReaderを使ったのですが、SAX/DOMでも同様なことができるのでしょうか?