- - PR -
【質問】XMLパースについて。
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-09-24 20:54
XMLデータをパースしたいのですが、
"<!-- コメント -->" のような行が含まれる場合、 "org.xml.sax.SAXParseException: The markup in the document preceding the root element must be well-formed." という例外が返ってきます。 何か考えられる原因がありましたら宜しくお願い致します。 | ||||||||
|
投稿日時: 2004-09-24 21:52
・パーサは何を使っていますか?
・XMLのエンコーディング指定とコメントの文字コードは合っていますか? | ||||||||
|
投稿日時: 2004-09-25 12:03
ukさん、ご返信どうもありがとうございましたっ♪ DOMParserを使っております。 ちょっとわかったことがありまして、あっているかどうかわかりませんが・・・。 <!- コメント -> の記述の前に、 <ReportInfo SEC="1">とあるのですが、これを対になっているタグ(<a></a>)と 認識してしまい、次の行の<!- コメント ->を値として読み取ったため、 起こったエラーなのではないかと考えました。 おそらく、Node.ELEMENT_NODEを条件に加え読み取らないようにすることで回避できる と思います。 [ メッセージ編集済み 編集者: るしぃ。 編集日時 2004-09-25 12:04 ] | ||||||||
|
投稿日時: 2004-09-25 12:22
DOMParserということはxercesを使っているということですか? バージョンはなんですか?
すいません、まったく意味がわからないんですが。「Node.ELEMENT_NODEを条件に加える」 って何に加えるんですか? あと、エンコーディングの確認はされました? それから本質的な ことを聞くのを忘れましたが、そのコメント行を取ればパースできるんですよね? | ||||||||
|
投稿日時: 2004-09-25 14:16
ukさん、またまた、ご返信ありがとうございます。
私、JAVA初心者なため、うまく伝えられませんで申し訳ないです・・・。 xerces.jar使ってます。バージョンってJAVA1.3って表現であってますよね? XMLの文字コードは、Shift_JISです。 <ReportInfo SEC="1"> <!- コメント -> <a>あいうえお</a> <ReportInfo SEC="2"> <!- コメント -> <a>かきくけこ</a> . ・ ・ 上記のように並んでいまして、"あいうえお"を取得しようとしています。 それで、<ReportInfo SEC="1">が対になっていると判断して、 次の行の"コメント"を取得してしまっているようなので、 Node.ELEMENT_NODEの時は、値を取得しないという風に、 したらいいのではないかなー♪って思ったんです。 サイトにもいろいろ書いているようなので、ちょっといろいろやってみます。 聞いてばかりだと成長しませんしねっ。 また行き詰まりましたら、ご相談しますねっ! ありがとうございました。 | ||||||||
|
投稿日時: 2004-09-25 15:48
typoなのか判断が付きかねますが
XMLのコメントは<!-- から -->までなので、 ->で終わるとwell-formedな(整形式である)XML文書になりません。 それから、ReportInfoの終了タグが無いように見えます。 もっとも、一部のみ引用しただけで実際にはあるのかもしれませんが。 パーサの吐いたエラーメッセージ 「The markup in the document preceding the root element must be well-formed」 は、あなたのXML文書がwell-formedでないことを示しています。 XMLの整形式についてはこちらが参考になると思います。 http://www.atmarkit.co.jp/fxml/rensai2/xmlmaster04/master04.html | ||||||||
|
投稿日時: 2004-09-25 19:39
まずエラーの原因ですが、ReportInfoが「対になっていない」つまり終了タグがないからでは?
<ReportInfo SEC="1"> <!-- コメント --> <a>あいうえお</a> </ReportInfo> <ReportInfo SEC="2"> <!-- コメント --> <a>かきくけこ</a> </ReportInfo> のようになっていなければならないはずですが。 #コメントの記述は私もtypoだろう、と思うのですが。 前にも書きましたが、そもそも「コメントがなければパースできる」のですか? | ||||||||
|
投稿日時: 2004-09-27 09:09
koeさん、ukさん、ご返信ありがとうございます。
すいません、<- ->は、書き込みする際のタイムミスです。 コメント部分は、<-- -->となっています。 <ReportInfo SEC="1">も対になっておりました。。。 コメントないとパースできております。 コメントある場合も値を取得できておりますので、パースはできていると思います。 パースした値を操作する時にエラーがでていましたので、 操作部分を修正していろいろやってみたいとおもいます。 ありがとうございましたっ! |