• ベストアンサー

DOMParserを使いたいのですが

こんにちは。 毎回初心者な質問で恐縮です。。 javaの中でXMLから特定のデータを抽出して表示したいのでインターネット上でサンプルがないか探していたところ、「アットマーク・アイティ」のホームページでちょうどよいものを見つけたのでそれを参考に作成しはじめたのですが、 DOMParser parser = new DOMParser(); という記述があり、ここでコンパイルがとまってしまいます。 import org.apache.xerces.parsers.*; がなかったのかと思い、記述を追加したところ今度は「パッケージは存在しません」と言われてしまいます。 jarファイルが足りないのかと調べていたのですが、このパッケージを使うために何が必要なのか参考資料がみつかりません。 「xerces」や「Parser」で調べたところ、自分のTOMCATのフォルダ内の\common\endorsedのフォルダ内に「xercesImpl.jar」「xmlParserAPIs.jar」がありました。 何がたりないのかご存知の方、教えてください。 よろしくお願いいたします。

  • Java
  • 回答数4
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • hrykhsmt
  • ベストアンサー率50% (5/10)
回答No.1

こんばんは。 @IT「Javaで実現するDOM/SAXプログラミング」 http://www.atmarkit.co.jp/fxml/rensai/xmljava01/xmljava04.html 上記のページによると「xerces.jar」を クラスパスに設定するとあります。 http://xml.apache.org/dist/xerces-j/ から「Xerces-J-bin.1.4.4.zip」をダウンロードして 解凍すると「xerces.jar」がありますので、 こちらを暮らすパスに設定すればコンパイルは 通ると思います。

tropical-flower
質問者

お礼

お礼が大変遅くなり申し訳ありません。 参考URL、大変参考になりました! 無事作成できました。 ありがとうございました!!

その他の回答 (3)

回答No.4

「xercesImpl.jar」「xmlParserAPIs.jar」でいいと思います。 jar tvf xmlParserAPIs.jar で見れば、含まれているのがわかります。 コンパイル時のクラスパスに追加すればいいです。 「xerces.jar」は古いバージョンだったかと思います。 ただ、私も特別なことをしないときはatonさんの書かれているDocumentBuilderFactory経由です。そちらに慣れているというだけで、DOMParserでもいいんですけど。

tropical-flower
質問者

お礼

お礼が大変遅くなり、申し訳ありません。 古いバージョンとのことで、調べ中です。 参考になりました、ありがとうございます!

  • aton
  • ベストアンサー率47% (160/334)
回答No.3

Javaの標準ライブラリーに DOMParser というクラスはないはずです。 代わりに javax.xml.parsers.DocumentBuilderFactory と javax.xml.parsers.DocumentBuilder を組み合わせると同等のことが実現できます。 Javaの標準ライブラリーに含まれないクラス(例えば org.apache.xerces.parsers.DOMParser)を利用する場合は,それらがjavacやjavaから「見える」ようにしてやる必要があります。 具体的には,javacやjavaがライブラリーを検索する範囲に,org.apache.xerces.parsers.DOMParserのクラスファイル(を含むjarファイルでも可)が存在していなくてはなりません。 そのための方法の一つは,ライブラリー検索範囲=クラスパスをorg.apache.xerces.parsers.DOMParserのクラスファイル(を含むjarファイル)が存在する場所を含むよう拡張すること, http://java.sun.com/j2se/1.4/ja/docs/ja/tooldocs/solaris/javac.html javac - Java プログラミング言語コンパイラ http://java.sun.com/j2se/1.4/ja/docs/ja/tooldocs/solaris/classpath.html クラスパスの設定 もう一つは,標準的なライブラリー検索範囲(例えば ${JAVA_HOME}/lib/ext )に,org.apache.xerces.parsers.DOMParserのクラスファイル(を含むjarファイル)を置いてやることです。 http://www.noblab.jp/technotes/java_ext/ Java の拡張ディレクトリ (ext) - TechNotes いずれにせよ,その辺りのことは, http://java.sun.com/j2se/1.4/ja/docs/ja/tooldocs/findingclasses.html クラスの検索方法 に書いてあります。 ともかく,Javaでプログラミングをするのであれば,最後に挙げたURLのページに書かれていることは,最低限理解しておくべきでしょう。そうしなければ,いつまでたっても「クラスが存在しない」とか「パッケージが存在しない」というエラーを繰り返すことになります。

tropical-flower
質問者

お礼

お礼が大変遅くなり申し訳ありません。 回答ありがとうございます。 非常に初歩的な質問だとは思っていますが、教えていただき助かりました。 勉強が足りない状態で「つくれ」と言われてしまったので納期優先で「勉強しながら~~」で作成しています。 がんばりますので、また質問をみかけましたらぜひ教えてください。 ありがとうございました。

  • hrykhsmt
  • ベストアンサー率50% (5/10)
回答No.2

訂正です。 「暮らすパス」→「クラスパス(CLASSPATH)」です。

関連するQ&A

  • JavaでのXMLパーサの使用について

    javaでパーサを使ってDOMツリーを作成したいのですが、パーサインスタンスが作成できずにエラーがでてしまいます。ちなみにコンパイルは通ります。 以下にソースとエラー内容を記述しますので、もしよろしかったらどなたか教えて下さい。 import java.io.*; import com.ibm.xml.parsers.*; import org.xml.sax.*; import org.w3c.dom.*; public static void main(String[] args){ try{      //XML文書作成 String xml = "<sample>Hello Java World</sample>"; //DOMパーサ作成 DOMParser parser = new DOMParser(); //入力ストリーム作成      StringReader sr = new StringReader(xml); InputSource is = new InputSource(sr); //パースする parser.parse(is); //ドキュメントを得る Document doc = parser.getDocument(); //トップレベル要素を得る Element el = doc.getDocumentElement(); System.out.println("Top Level Element: " + el.getTagName()); } catch(Exception e){ e.printStackTrace(); } } エラー内容: java.lang.NoClassDefFoundError: com.ibm.xml.parsers.DOMParser java.lang.Throwable(java.lang.String) java.lang.Error(java.lang.String) java.lang.LinkageError(java.lang.String) java.lang.NoClassDefFoundError(java.lang.String) void pkxml.dom.PsDomBean.makedom() void pkxml.dom.PsDomBean.makedom() void pkxmlsutabu.Sutabu.main(java.lang.String [])

  • JSPでのコンパイル

    Tomcatを使ってJSPの勉強をしています。 本来JSPのコンパイルは%Tomcat_Home%\common\lib\tools.jar によって行われるはずなのですが、どうやら私の環境では javac.exeでコンパイルしているようです。 原因がわかるかたはいらっしゃるでしょうか? %Tomcat_Home%\common\lib\にtools.jarは存在します。

  • DOMでパースしているXML全体の出力方法

    お世話になります。 JavaでDOMを使ってXML操作をしたいと考えております。 おおよそ、以下のソースでparseできるところまで確認できました。 DOMParser parser = new DOMParser(); parser.parse("XMLファイルパス"); Document doc = parser.getDocument(); 開発中なので、DOM操作した結果のXMLを随時コンソールやログに 出力させたいのですが、たとえばdoc.toString()してもnullとなり、 正常に出力されません。 以下のようにElementを取得すると正常にアクセスできていることは 確認しています。 Element rootEl = doc.getDocumentElement(); System.out.println(rootEl.getNodeName()); なお、DOMライブラリにはxercesを用いております。 Dom4jのAPIも見てみましたが、それらしいメソッドを見つけることが できていません。 簡単にXMLを出力できることが理想です。 一般的な方法、よくやる手法など、みなさんよりご教示頂きたいです。

    • ベストアンサー
    • Java
  • XMLパーサの種類について混乱してます

    XSLTをいじる必要に駆られて、現在Java1.4+JAXP1.1を利用しています。 いままで、javax.xml.transformをimportしてメソッドを実行するだけで、「変換系に何を使っているのか」については全く気にしていなかったのですが、その実体は何なのでしょうか? (XTとかXalanとか、単体の変換系がありますよね・・・?) また、DOMパーサ、SAXパーサもJAXPで使えますが、各々のパーサや変換系を集めてパッケージにしたものがJAXPなんでしょうか。 さらに、勉強中にXMLパーサという単語が出てきて混乱しています。XMLパーサは、DOM・SAX・XSLT等とは違うのでしょうか? (XMLパーサと名乗っているXercesは何に使うのでしょうか・・・) DTDとの関連も含めて解説して頂けたら嬉しいです。

    • ベストアンサー
    • Java
  • log4j.xmlファイルの読込で。。。

    log4Jの設定ファイルの読込を DOMConfigurator.configure("log4j.xml"); とJavaで記述していますが以下のエラーが表示されます。 log4j:ERROR Could not parse file [log4j.xml]. java.io.FileNotFoundException: C:\WINDOWS\System32\log4j.xml (指定されたファイルが見つかりません。) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.<init>(Unknown Source) at java.io.FileInputStream.<init>(Unknown Source) at sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source) at sun.net.www.protocol.file.FileURLConnection.getInputStream(Unknown Source) at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source) at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source) atorg.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.DOMParser.parse(Unknown Source) at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source) at javax.xml.parsers.DocumentBuilder.parse(Unknown Source) at org.apache.log4j.xml.DOMConfigurator$1.parse(DOMConfigurator.java:598) at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:711) at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:604) at org.apache.log4j.xml.DOMConfigurator.configure(DOMConfigurator.java:733) at HttpTestServlet.doPost(HttpTestServlet.java:31) どこに原因があるのかわかりませんので、 どなたかわかる方がいらっしゃいましたらご指摘願います。

  • ApacheSOAPの設定

    簡単なWebサービスを作ってみようと思い、先日、 TomcatとApacheSOAPをインストールし、 Tomcatの起動に関しては無事成功しました。 また、 http://localhost:8080/soap もきちんと見ることができます。 ですが、ここから先で問題が生じました。 それは、 http://localhost:8080/soap/admin で行うことのできる機能のすべてを利用することができない、 ということです。 ListもDeployもUndeployも、すべてJSP(プラスBean)の形で 提供されていますが、それらを実行しようとすると、例外が発生します。 その上、正常にJSPが呼び出されたときに表示されるはずのフォームは 一切表示されず、そのかわりに、例外についての情報をずらりと表示します。 設定に誤りがあったのかと思いましたが、 xerces.jarとsoap.jarはクラスパスに追加されていますし、 もちろんxerces.jarについては、クラスパスの先頭に追加されています。 tomcat.batの訂正も抜かりなく行われています。 server.xmlには、http://localhost:8080/soap を見るための設定の追加が施されています。 にもかかわらず、正常動作しないのは、 設定が間違っているか、まだ行っていない設定があるかの いずれかだろうとは思うのですが、それが具体的に何かがわからないのです。 ちなみに、私の環境は、 OS:WINME JDK:JDK1.3 Xerces:Xerces 1.2.3 Tomcat:tomcat 3.2.1 SOAP:SOAP 2.0 です。 もし、このことについてご存知な方がいらっしゃいましたら、 ぜひ回答していただきたいと思います。

    • ベストアンサー
    • Java
  • 環境変数の設定

    Servletでコンパイルをすると、 パッケージ javax.servlet.http, javax.servletは存在しないなどと いうエラーメッセージが出てしまいます。 原因が環境変数の設定が悪いという事はわかっているのですが、 何度設定してもエラーが出てしまって、困っております。 CLASSPATH .;C:\Tomcat 4.1.34\common\lib\servlet.jar このように設定をしているのですが、何が悪いのでしょうか・・・。 よろしくお願いします。

    • ベストアンサー
    • Java
  • eclipse-tomcat 実行エラー

    eclipseでfess(全文検索オープンソース)のデバッグをしようとしましたがtomcat実行した際に以下のエラーがでてしまいます。なぜでしょうか?起動構成のクラスパスには$TOMCAT_HOME\bin、$TOMCAT_HOME\lib内のjarファイルを指定しています。tomcat6でも7でも試してみました。Server.xmlの内容は「<Context path="fess" reloadable="true" docBase="D:\workspace\fess\src\main\webapp" workDir="D:\workspace\fess\src\main\webapp" />」一行を追加したのみです。ちなみに http://localhost:8080/examples/ は正常に表示されています。 2012/05/11 10:36:13 org.apache.tomcat.util.digester.Digester startElement 致命的: Begin event threw exception java.lang.NullPointerException at org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:144) at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1276) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501) at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(XMLDTDValidator.java:767) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1363) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$ContentDriver.scanRootElementHook(XMLDocumentScannerImpl.java:1318) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3104) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:922) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522) at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1537) at org.apache.catalina.startup.Catalina.load(Catalina.java:601) at org.apache.catalina.startup.Catalina.load(Catalina.java:649) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:449)

  • 外部jarへのパスの通し方

    はじめまして。パスの通し方について教えてください。 javaを勉強しようと、 j2sdk1.4.1_04 jakarta-log4j-1.2.8 tomcat_5.0.16 eclipse2.1.1 をダウンロードして、環境を設定しようとしているところです。 しかし、外部jar(log4j、tomcat)を使用したSRCをコンパイルしようとしても、javax.servlet.httpが見つかりません等のエラーが出てしまいます。 eclipseでは、外部jarを取り込んでいるので、コンパイルが通って動作確認(log4jのみ)は済んでいます。 ただし、コマンドプロンプトからのコンパイルでは上記のようなエラーが出てしまいます。 PATHは JAVA_HOME: C:\j2sdk1.4.1_04 TOMCAT_HOME: C:\Program Files\Apache Software Foundation\Tomcat 5.0 LOG4J_HOME: C:\jakarta-log4j-1.2.8 CLASS_PATH .;%LOG4J_HOME%\dist\lib\log4j-1.2.8.jar;%TOMCAT_HOME%\common\lib\ant.jar;%TOMCAT_HOME%\common\lib\commons-collections.jar・・・ (C:\Program Files\Apache Software Foundation\Tomcat 5.0\common\lib\配下全てのjar) に設定してあります。(インストールは全てデフォルト、解凍するものはC直下に解凍してあります。eclipseも同様のものを外部jarとして取り込んであります。) 何か、根本的に間違っているのでしょうか? よろしくお願いします。 ★最終的には、MY_SQLを使用しservletからDBアクセスという環境を設定したいと思っています。 長文失礼しました。

  • ディレクトリ構成と意味不明なエラー…

    いつも参考にさせて頂いています。 JAVA初心者ですのでわかりやすくして頂けると幸いです。 今struts(1.2.4)を利用してEclipse(3.1)での開発を自宅で練習しています。サーバーはTomcat(4.1.31)を使用しています。Eclipse内のディレクトリ構成が +projectフォルダ | +---JREシステムライブラリ | +---servlet.jar | +---runtime.jar | +---WEB-INF/src |    |--- java.resources |    |--- build.xml +---struts.jar | +WEB-INF | +---××.jsp のようになっています。なんとなくめちゃくちゃになってるような気がするのですが…訂正箇所はありますでしょうか?(もしあれば訂正方法も教えて頂けると助かります。) そもそもWEB-INF/srcとWEB-INFはどう違うのかもわかりません…サイトを参考にしている(EclipseにTomcatプラグイン等を入れていると)とこうなってしまいました。 あとWEB-INFに×印がついてエラー表示されています(WEB-INF以下はlibフォルダとxmlファイル.tldファイルのみでクラス等はありません)。なぜコンパイルエラーはありえないのにエラーが出るのでしょうか…わかりにくい説明かもしれませんが宜しくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう