0

Javaでxpathを使用して巨大なXMLファイルに対していくつかのクエリを作成しようとしています。これが私のコードです:

         DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
         docBuilderFactory.setNamespaceAware(true);

         DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
         Document document = docBuilder.parse(new File("test.xml"));

         XPath xpath = XPathFactory.newInstance().newXPath();

         String xPath = "/*/*[@id='ABCD']/*/*";

         XPathExpression expr = xpath.compile(xPath);
         NodeList result = (NodeList)expr.evaluate(document, XPathConstants.NODESET);

コードの最後の行には時間がかかりますが、理由はわかりません。この行がないと、プログラムは 1 秒で終了し、40 秒で終了します。また、動作していないXOMも試しました。javaの巨大なXMLファイルでより高速なクエリを作成するための代替手段は何ですか?

4

1 に答える 1

0

DOM ではなく SAX を使用します。SAX は、DOM のように XML データの内部表現 (ツリー構造) を構築しないため、DOM よりもはるかに少ないメモリしか必要としません。代わりに、SAX は単にデータを読み取ったときにアプリケーションに送信します。その後、アプリケーションは、表示されたデータに対してやりたいことを何でも行うことができます。

詳細については、お読みください。

http://docs.oracle.com/javase/tutorial/jaxp/sax/index.html

于 2013-06-22T06:16:17.290 に答える