• ベストアンサー

XMLの読み込み

DocumentBuilderFactory,DocumentBuilder等を使って XMLドキュメントの読み込みを行っています。 例えば、以下の様なXMLドキュメントがあった時 <text>内の読み込みを行うと、テキストテキスト2と なってしまいます。 「テキスト<p/><p/>テキスト2」として取得したいのですが 何かいい方法ないでしょうか? ----------------------------------------- <?xml version="1.0" encoding="Shift_JIS"?> <root> <text> テキスト<p/><p/>テキスト2</text> </root> ----------------------------------------- それとも、XMLドキュメント上、「<p/>」に意味があるのでしょうか? ※プログラム一部抜粋 //-- DOMオブジェクト初期化 DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); //-- XMLファイル読み込み this.doc = docBuilder.parse(new File(strPath)); this.doc.getDocumentElement().normalize();

質問者が選んだベストアンサー

  • ベストアンサー
noname#219128
noname#219128
回答No.2

XMLデータの定義として<text>タグの中に<p>タグが存在しているのか、それとも<text>タグの中はCDATAのみで<p>タグは存在しない定義なのかどちらなのでしょう? 前者の場合は<p>タグですので<text>タグのCDATAではありません。 後者の場合はそのXMLを出力しているところが間違っています。 どうしてもと言うのならXMLとみなさずにテキストデータとして処理してみてはいかがでしょうか?

JEN299
質問者

お礼

ご回答ありがとうございます。 テキストデータとして処理する方向で考えてみたいと思います。

その他の回答 (2)

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.3

ANo.1~2さんがおっしゃっているように、XMLでリードしないでテキストとしてリードするしかないと思いますよ。 <text> テキスト<p/><p/>テキスト2</text> って、DTDっぽく書くと <!ELEMENT text (#PCDATA,p*,#PCDATA)> となるので、<p/>はXMLタグとして認識されますよね。 < > 等は、xml構文として認識するために必要だから &gt; &lt;等に置き換えるわけで、それができないならシステムとして破綻しています。

noname#219128
noname#219128
回答No.1

<text> テキスト<p/><p/>テキスト2</text> の部分はメモ帳などで開いた時に <text> テキスト&lt;p/&gt;&lt;p/&gt;テキスト2</text> となっていますか? なっていなければ <text> テキスト<p></p><p></p>テキスト2</text> という扱いになりますので「p」は次のノードのタグになります。 「<」「>」「&」等をデータとして扱う場合はそれぞれ「&lt;」「&gt;」「&amp;」としてください。

参考URL:
http://www.asahi-net.or.jp/~ps8a-okzk/xml/xml_2/escape.html
JEN299
質問者

補足

回答ありがとうございます。 いいえ。下記の状態です。 <text> テキスト<p/><p/>テキスト2</text> このXMLは、すでに内容が決まっているもので。 以下の形にできません。(出力XMLを読み込むだけなので) <text> テキスト&lt;p/&gt;&lt;p/&gt;テキスト2</text> XML文書全体を「&lt;」「&gt;」「&amp;」はできますが・・。 要素のみを、「&lt;」「&gt;」「&amp;」に変換する事が できずにいます。 ※できるものなんでしょうか? これは、XMLの内容を <text> テキスト&lt;p/&gt;&lt;p/&gt;テキスト2</text> にしてもらうか。 CDATA等で囲ってもらうしかないのでしょうか?

関連するQ&A