- - PR -
「'」→「'」、「"」→「"」
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-01-07 21:18
上記のようなJavaのプログラムで、XMLファイルを読み込んでその文字列を取得したいのですが、たとえば下記のXMLファイル(test.xml)を読み込んで出力した際に、
結果が
というようになってしまいます。 「<」→「<」と同じように、「'」→「'」、「"」→「"」の形で取得したいのですが、どのようにすればよいのでしょうか? よろしくお願いします。 | ||||||||||||
|
投稿日時: 2008-01-08 17:25
はじめましてなぎさ。です。
どのバージョンのJ2SEを利用しているかわかりませんが。 J2SE 1.4は DOM Level 2 API J2SE 5.0以降は DOM Level 3 API を利用しています。 J2SEのバージョンは関係無いと言えば無いのですが 参考 そもそもなぜそのように出力したいのかわかりかねますが・・・ 読み込んだ時点で ' は自動的に文字 ' に置換されます。 その展開ルールを決めている仕様がXML1.0で XMLプロセッサは置換された文字列を扱うことが決められています。 出力されるときはXML1.0仕様に基づき変換するため 存在できる ' は ' に置換する必要が無いため変換されません。 試しに Document document = builder.parse("test.xml"); を実行した直後ブレークポイントで停止し 変数document.fNodeValue[0][0-99][11] ですでに <>&"' に変換されていました。 環境 NetBeansIDE6.0 J2SE6.0 ' と ' はXML上では等価なので特に問題無いと思えるのですが・・・ 見た目はともかくXML1.0の仕様です | ||||||||||||
|
投稿日時: 2008-01-08 18:27
どーしても見た目を変えたいのなら、そのStringWriterから作ったStringに対して文字列置換をしてしまうか、DOMのシリアライズ処理でTransformerを使わずに自分で処理を書く、などになると思います。
なぎささんも書いているように、XML的には意味は同じです。もし開発しているモノの仕様として'などを使わなければならないとなっているなら、その妙な仕様を変えるべきです。 | ||||||||||||
|
投稿日時: 2008-01-08 19:08
なぎさ。さん、スフレさん
お二人とも回答ありがとうございました。 相手側のシステムにXMLを送信する際に「'」→「'」、「"」→「"」として送信するという仕様になっていたため、今回の質問をしました。 私自身勘違いしていたのですが、「<」、「>」、「&」についてはXML仕様で意味を持つ文字なので「<」などに置き換える必要があるので、それと同じように「'」、「"」についても置き換えなければならないのかと思っていました。 XML仕様上同じなのですね。相手のシステムの人に確認してみます。 どうしても置き換えなければならないようでしたら、スフレさんが書かれているように対応したいと思います。 ありがとうございました。 [ メッセージ編集済み 編集者: きご 編集日時 2008-01-08 19:09 ] |
1