- - PR -
javaからxmlの解析について
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-06-24 10:10
お世話になっております。
javaからJAXPで解析をしようとしているのですが parse時にxmlの文字列を渡したのですがエラーとなってしまいます。 エラー内容:(MalformedURLException) URL(パス)を渡すと正常動作します。 簡単な質問ではありますがXML文字列を渡すにはどうしたら いいのでしょうか? どなたかご存知の方がいらっしゃいましたら、ご教授または 参考サイト等を教えていただきたいです。 | ||||
|
投稿日時: 2004-06-24 10:29
JAXPでMalformedURLExceptionってことは、
SAXじゃなくてDOMを使ってると仮定して(SAXでも解決法はほとんど変わらないけど)、 DocumentBuilder#parse(String uri)を使ってるってことだよね。 じゃなくて、こっちを使うようにすればOKだと思うよ。 そのための参考サイトはこれと、これかな。 | ||||
|
投稿日時: 2004-06-24 10:54
parse(new InputSource(new StringReader(XML文字列)))
このようにしたら解析できました。 回答ありがとうございました。 | ||||
|
投稿日時: 2004-06-24 16:13
すみません。上記の内容で解析できたと思いきや
SAXException:Reference is not allowed in prolog. となってしまいました。 ちなみに"XML文字列"には"<?xml version="1.0" encoding="Shift・・・・" という感じのXMLが入っています。 どうすれば上記エラーを回避できるでしょうか? | ||||
|
投稿日時: 2004-06-24 17:16
単にXML文字列の書式が間違っているだけかと…
プロローグブロック(1行目のXML宣言および、もし存在するならDOCTYPE宣言のあたり) がXMLの文法的にダメですよ、ということでは。 <?xml version="1.0" encoding="Shift_JIS"?>と指定しているのに、以降が Shift_JISで記述されていない、ということもありえるかもしれませんね。 | ||||
|
投稿日時: 2004-06-24 18:33
StringReaderで読んでしまう分には、それは関係ないと思いますよ。 # うちのXerces君はOKでした。 心配なら、 new InputSource(new ByteArrayInputStream(str.getBytes("Shift-JIS"))) でやってみるといいかも。 | ||||
|
投稿日時: 2004-06-25 17:27
XML文書で、外部ファイルでDTDを定義している場合は、JAXPの場合 InputSourceにSystemIdを設定しておかないとエンティティの解決ができないようです。
この辺を参考にされるとよいかも http://java-house.jp/ml/archive/j-h-b/042961.html#body | ||||
1
