天天看点

java解析xml文件失败,在Java中解析大型XML文件时找不到文件异常

我使用SAX(Simple API for XML)来解析XML文档。该文档是一个巨大的XML文件(dblp.xml - 1.46 GB),我写了几行解析器并在小文件上测试它,它的工作原理。

java解析xml文件失败,在Java中解析大型XML文件时找不到文件异常

Sample.XML和Student.XML是几行XML的小文件,我的解析器会解析它们但是当我更改dblp.XML的路径时,它会生成找不到文件的异常(文件仍然存在其他示例文件,但它的巨大尺寸)

这是我得到的例外:

java.io.FileNotFoundException: E:\Workspaces\Java\SaxParser\xml\dblp.dtd (The system cannot find the file specified)

这是我的代码:

package com.teamincredibles.sax;

import javax.xml.parsers.SAXParser;

import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;

import org.xml.sax.SAXException;

import org.xml.sax.helpers.DefaultHandler;

public class Parser extends DefaultHandler {

public void getXml() {

try {

SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();

SAXParser saxParser = saxParserFactory.newSAXParser();

final MySet openingTagList = new MySet();

final MySet closingTagList = new MySet();

DefaultHandler defaultHandler = new DefaultHandler() {

public void startDocument() throws SAXException {

System.out.println("Starting Parsing...\n");

}

public void endDocument() throws SAXException {

System.out.print("\n\nDone Parsing!");

}

public void startElement(String uri, String localName, String qName,

Attributes attributes) throws SAXException {

if (!openingTagList.contains(qName)) {

openingTagList.add(qName);

System.out.print("\n");

}

}

public void characters(char ch[], int start, int length)

throws SAXException {

}

public void endElement(String uri, String localName, String qName)

throws SAXException {

if (!closingTagList.contains(qName)) {

closingTagList.add(qName);

System.out.print("" + qName + ">");

}

}

};

saxParser.parse("xml/dblp.xml", defaultHandler);

} catch (Exception e) {

e.printStackTrace();

}

}

public static void main(String args[]) {

Parser readXml = new Parser();

readXml.getXml();

}

}

我无法弄清楚的是什么。