- ベストアンサー
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();
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
XMLデータの定義として<text>タグの中に<p>タグが存在しているのか、それとも<text>タグの中はCDATAのみで<p>タグは存在しない定義なのかどちらなのでしょう? 前者の場合は<p>タグですので<text>タグのCDATAではありません。 後者の場合はそのXMLを出力しているところが間違っています。 どうしてもと言うのならXMLとみなさずにテキストデータとして処理してみてはいかがでしょうか?
その他の回答 (2)
- PED02744
- ベストアンサー率40% (157/390)
ANo.1~2さんがおっしゃっているように、XMLでリードしないでテキストとしてリードするしかないと思いますよ。 <text> テキスト<p/><p/>テキスト2</text> って、DTDっぽく書くと <!ELEMENT text (#PCDATA,p*,#PCDATA)> となるので、<p/>はXMLタグとして認識されますよね。 < > 等は、xml構文として認識するために必要だから > <等に置き換えるわけで、それができないならシステムとして破綻しています。
<text> テキスト<p/><p/>テキスト2</text> の部分はメモ帳などで開いた時に <text> テキスト<p/><p/>テキスト2</text> となっていますか? なっていなければ <text> テキスト<p></p><p></p>テキスト2</text> という扱いになりますので「p」は次のノードのタグになります。 「<」「>」「&」等をデータとして扱う場合はそれぞれ「<」「>」「&」としてください。
補足
回答ありがとうございます。 いいえ。下記の状態です。 <text> テキスト<p/><p/>テキスト2</text> このXMLは、すでに内容が決まっているもので。 以下の形にできません。(出力XMLを読み込むだけなので) <text> テキスト<p/><p/>テキスト2</text> XML文書全体を「<」「>」「&」はできますが・・。 要素のみを、「<」「>」「&」に変換する事が できずにいます。 ※できるものなんでしょうか? これは、XMLの内容を <text> テキスト<p/><p/>テキスト2</text> にしてもらうか。 CDATA等で囲ってもらうしかないのでしょうか?
お礼
ご回答ありがとうございます。 テキストデータとして処理する方向で考えてみたいと思います。