Я сделал следующий метод, который выполняет жестко запрограммированные запросы xPath в жестко запрограммированном XML-файле. Метод отлично работает с одним исключением. Некоторые XML-файлы содержат следующий тег
<!DOCTYPE WorkFlowDefinition SYSTEM "wfdef4.dtd">
Когда я пытаюсь выполнить запрос в этом файле, я получаю следующее исключение:
java.io.FileNotFoundException:
C:\ProgramFiles\code\other\xPath\wfdef4.dtd(The system cannot find the file specified).
Вопрос: Что я могу сделать, чтобы моя программа не учитывала этот файл DTD?
Я также отметил, что путь C: \ ProgramFiles \ code \ other \ xPath \ wfdef4.dtd - это тот, из которого запускается мое приложение, а не тот, в котором находится фактический xml-файл.
Спасибо за продвижение
Вот мой метод:
public String evaluate(String expression,File file){
XPathFactory factory = XPathFactory.newInstance();
xPath = XPathFactory.newInstance().newXPath();
StringBuffer strBuffer = new StringBuffer();
try{
InputSource inputSource = new InputSource(new FileInputStream(file));
//evaluates the expression
NodeList nodeList = (NodeList)xPath.evaluate(expression,
inputSource,XPathConstants.NODESET);
//does other stuff, irrelevant with my question.
for (int i = 0 ; i <nodeList.getLength(); i++){
strBuffer.append(nodeList.item(i).getTextContent());
}
}catch (Exception e) {
e.printStackTrace();
}
return strBuffer.toString();
}