- PR -

javaからxmlの解析について

1
投稿者投稿内容
シンジ
会議室デビュー日: 2004/05/31
投稿数: 8
投稿日時: 2004-06-24 10:10
お世話になっております。

javaからJAXPで解析をしようとしているのですが
parse時にxmlの文字列を渡したのですがエラーとなってしまいます。
エラー内容:(MalformedURLException)
URL(パス)を渡すと正常動作します。
簡単な質問ではありますがXML文字列を渡すにはどうしたら
いいのでしょうか?
どなたかご存知の方がいらっしゃいましたら、ご教授または
参考サイト等を教えていただきたいです。
Wata
ぬし
会議室デビュー日: 2003/05/17
投稿数: 279
投稿日時: 2004-06-24 10:29
JAXPでMalformedURLExceptionってことは、
SAXじゃなくてDOMを使ってると仮定して(SAXでも解決法はほとんど変わらないけど)、
DocumentBuilder#parse(String uri)を使ってるってことだよね。
じゃなくて、こっちを使うようにすればOKだと思うよ。
そのための参考サイトはこれと、これかな。
シンジ
会議室デビュー日: 2004/05/31
投稿数: 8
投稿日時: 2004-06-24 10:54
parse(new InputSource(new StringReader(XML文字列)))
このようにしたら解析できました。

回答ありがとうございました。
シンジ
会議室デビュー日: 2004/05/31
投稿数: 8
投稿日時: 2004-06-24 16:13
すみません。上記の内容で解析できたと思いきや
SAXException:Reference is not allowed in prolog.
となってしまいました。

ちなみに"XML文字列"には"<?xml version="1.0" encoding="Shift・・・・"
という感じのXMLが入っています。
どうすれば上記エラーを回避できるでしょうか?
シュン
ぬし
会議室デビュー日: 2004/01/06
投稿数: 328
お住まい・勤務地: 東京都
投稿日時: 2004-06-24 17:16
単にXML文字列の書式が間違っているだけかと…
プロローグブロック(1行目のXML宣言および、もし存在するならDOCTYPE宣言のあたり)
がXMLの文法的にダメですよ、ということでは。

<?xml version="1.0" encoding="Shift_JIS"?>と指定しているのに、以降が
Shift_JISで記述されていない、ということもありえるかもしれませんね。
Wata
ぬし
会議室デビュー日: 2003/05/17
投稿数: 279
投稿日時: 2004-06-24 18:33
引用:

シュンさんの書き込み (2004-06-24 17:16) より:
<?xml version="1.0" encoding="Shift_JIS"?>と指定しているのに、以降が
Shift_JISで記述されていない、ということもありえるかもしれませんね。


StringReaderで読んでしまう分には、それは関係ないと思いますよ。
# うちのXerces君はOKでした。

心配なら、
new InputSource(new ByteArrayInputStream(str.getBytes("Shift-JIS")))
でやってみるといいかも。
未記入
会議室デビュー日: 2004/06/25
投稿数: 6
投稿日時: 2004-06-25 17:27
XML文書で、外部ファイルでDTDを定義している場合は、JAXPの場合 InputSourceにSystemIdを設定しておかないとエンティティの解決ができないようです。

この辺を参考にされるとよいかも
http://java-house.jp/ml/archive/j-h-b/042961.html#body
1

スキルアップ/キャリアアップ(JOB@IT)