• 締切済み

SAXによる文字データの読み込み方法

現在、自作アプリのデータをXMLでファイルに保存し、SAXで読み込み処理をしようと考えております。 データは、次のようなものと仮定します。 <歌> <曲名>○○の歌</曲名> <作曲者>某 太郎</作曲者> </歌> 上記のようなXMLの場合、曲名、作曲者をcharacters()で得ることとなると思うのですが、どちらのデータなのかを判断する方法が分かりません。 startElement()で場合分けして、フラグをたてておいて、characters()内で、そのフラグを見て判断するしかないのでしょうか? なんか、スマートでない気がして、なにかいい方法がないかと悩んでいます。 ファイルから読み込んで、すぐに自前のクラスに代入するのですが、DOMでツリーを作った方がいいのでしょうか? なにか、よい方法をご存じでしたらご教授下さい。 よろしくお願いいたします。

  • XML
  • 回答数1
  • ありがとう数4

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

プログラム言語がなにかよくわかりませんが、 SAXによる方法だと多かれ少なかれそんな感じになると思います。 DOMでもなんでもパーサーの処理結果を使うのが(特に問題となるような事項がないなら)楽ちんだと思います。

tomorot
質問者

お礼

回答ありがとうございます。 やはり、場合分けしてするしかないみたいですね。 今、どこのタグを解析中か、スタックで記憶するようにして場合分けするようにします。 ありがとうございました。

関連するQ&A

  • DOMデータを使ってSAXで解析する方法

    Javaで作成したDOMデータをSAXを使って解析するには どのようにしたら良いのでしょうか? サンプル等ではXMLファイルを読み込んで解析する処理は 沢山あるのですが、DOMのデータをSAXに渡して解析 するような処理が見当たらなかったので質問しました。

    • ベストアンサー
    • XML
  • SAXのcharacters()内で得る値について

    XML(UTF-8)ファイルをPerlでOPENして読み込んで、 XML::SAXで、 characters()メソッド内で取得した文字列値を利用していますが、 XML内に&文字が存在していると、 そこで、 utf8 "\x81" does not map to Unicode at C:/Perl/site/lib/XML/SAX/PurePerl/Reader/ Stream.pm line 37. utf8 "\x8C" does not map to Unicode at C:/Perl/site/lib/XML/SAX/PurePerl/Reader/ Stream.pm line 37. Undeclared entity [Ln: 516, Col: 21] エラーが出て強制終了されます。 どうすれば、このようなエラーを解消できますか?

    • ベストアンサー
    • XML
  • ServletからXMLを読み込む方法

    こんにちわ。 JSPからGETで受け取ったデータと、ローカルXMLファイルのデータの画面表示をサーブレットを使って行いたいと思っています。 このとき、XMLファイルからのデータ取得方法が分かりません。 普通のJavaであればDOMとしてXMLを操作したことがあるのですが、サーブレットの場合、違ってくるのでしょうか。 簡単な例等を教えていただけると嬉しいです。 お手数ですが、お分かりになる方、どうぞご教授くださいませ。

  • JavaからXMLプロセッサを使うとは?

    JavaでXMLを処理する必要に駆られまして、一念発起して勉強しています。 XMLを処理するためには、JavaのAPIがあってそれを利用するというのはokで、処理方法にはDOM・SAX・XSLTといったものがあるというのもわかりました。 ただ、DOMやSAXが、Javaプログラムからデータを読む手助けをするためのモノというのはわかるのですが、XSLTはただの変換とどう違うのでしょうか? 本を読む限り、XSLの規則にしたがって変換するもの。となっていて、読み込ませる→変換結果が出てくる、で、なんだかHTMLの生成くらいにしか使えないような印象なのですが、Javaとタッグを組んでデータを処理させたい場合、どんな使われ方をするのでしょうか。 DOMやSAXでも良いじゃんと言われそうなのですが、HTMLも同時に扱う必要があるため、ぜひ習得したいのです。 ですが、市販のJava本はほとんどXMLパーサ関係ばかりで・・・。また、何かいい参考書もあったら教えていただきたいと思います。

    • ベストアンサー
    • Java
  • XML文章検索方法でDOM&SAX以外に何かありますか?

    こんにちわ、jixyoji-と申しますm(._.)m。 非常に困っているのですがタイトルのとおりに、簡単なキー検索をしたいのですけれどXML文章検索方法でDOM&SAX以外に何かありますか?私の環境は下記過去ログのとおりです。この質問のページの1ページ前に質問内容があるので何かの参考になればお願いします。 「Solaris8でApache1.3 ver12とTomcat3.3でxmlファイルをどのような検索方法がありますか?後検索の方の設計も教えてm(._.)」 http://www.okweb.ne.jp/kotaeru.php3?q=208880 できたら上記の過去ログで何かわかる人がいれば回答をお願いします。これだけでは内容が不明であれば補足します。宜しく御願いしますm(._.)m。

  • PerlのSAX利用中にXSL変換するには?

    お世話になります。 Windows7上のActivePerlで、 use XML::SAX; use XML::LibXSLT; モジュールを利用中に、 start_elementイベント時のタイミングで、 取得したタグ文字を、 そのタイミングで、XSL変換することは可能なのでしょうか? 今回の目的は、 XSL変換した後の各値を、 配列などにセットできればOKという状況ですので、 もしSAXで無理でしたら、 たとえばDOMやXPathなどで、 use XML::LibXML; use XML::LibXSLT; モジュールを利用中に、 随時取得したタグ文字を対象として、 そのタイミングで、XSL変換して配列にセットできれば、 それでもOKという状況です。 PS: (ちなみに、  XSLファイル内で、  <xsl:output method="xml">  を指定してから、  XSL変換を実施すると、  まとめてXSL変換自体は、  一通り正常に行われているのですが、  なぜか、出力されたファイルは、  XML形式ではなくて、  text形式でファイルが出力されてしまう為、  (タグ文字が全て空白文字に置換されています)  XMLパーサが一切利用出来なくなってしまい、困っています) 以上になります。 もしご存じの方がいらっしゃいましたら、 よろしくお願いします。

    • ベストアンサー
    • Perl
  • JavaでXMLをファイルからじゃなく扱いたい

    Javaで例えば、String変数に String str = "<xml sample>hogehoge</xml sample>" みたいにXML形式のデータが入っているとして、このデータを、XMLファイルをDOMで扱う時のように扱えないでしょうか?一度、ファイルに書きだして、XMLファイルとして読み込ませないと難しいでしょうか?

    • ベストアンサー
    • Java
  • JavaScript側でのXML作成の方法

    JavaScript側でのXML作成の方法 Ajax開発の経験は始めてなので勝手がわかっていないのですが やりたい事はサーバー側からXMLデータを取得して JavaScript側でXMLを編集してサーバーに書き戻すような事がしたいのです。 このような場合、DOMツリーをXMLファイルにシリアライズするには IEだとActiveXObject("Microsoft.XMLDOM")、FireFoxだとXMLSerializer()を使うと いったようにブラウザごとに処理を分けねばなりません。 これは面倒なのであまりやりたくありません。 あとはベタなテキストとして var xml = "<?xml version='1.0' encoding='utf-8'?>" + "<root><element>test</element></root>" と書いていくくらいしか思いつかないのですが ブラウザ間ごとの違いを吸収してくれる XML編集用の便利なJavaScriptライブラリなどは存在したりするものでしょうか? (jQueryなどがそうのような機能を内包してたりする?) 少し調べてみた限りでは無さそうに感じたのですが 処理としてはよくありそうな事なのでお聞きしてみました。

  • JDBCの性能は?

    いつもお世話になってます。 今、数千万以上のデータを扱うのに、JDBCかXML(DOM,SAX)にしようか迷っています。 でもJDBCはまださわったことがありません。 データの扱いは、書き込みと参照の連続です。 これだとDOMではメモリに限界があると思うのでJDBCにしようかと考えた次第です。 そこで聞きたいのですが、JDBCの動作(insertやselect)のスピードは速いのでしょうか? JDBCを使っている方、ささいな情報でもいいのでよろしくお願いします。

    • ベストアンサー
    • Java
  • サックスで演奏のこの曲名を教えてください

    すみません。今度は、データを添付いたしました。 midi形式です。おおむねあっていると思います。 曲の出だしの前半と後半と2ファイル添付いたしました。 BGMで聴いた曲です。サックスがメインでとっても哀愁が漂っていて カッコイイ曲だと思いました。 メロディはなんとなく覚えているのですが、曲名がわかりません。 曲名をご存知の方、是非教えてください。 メロディは概ね添付ファイルのとおりだったと思います。 音階は、下記のサイトで鍵盤を叩いて確認しました。 ​http://www.musipedia.org/flash_piano.html​ どうぞよろしくお願いいたします。

専門家に質問してみよう