Листинг 9.7. Метод grabDtd получает текущее определение moreovernews.dtd (XMLgrabber.java)
// at this point pw is open to a temp file for dtd private void grabDtd() throws IOException { System.out.println("grabDtd:" + dtdURL ); URLConnection urlC = theURL.openConnection(); urlC.setUseCaches( false ); urlC.setAllowUserInteraction(false); urlC.connect(); InputStream is = urlC.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader( isr ); String tmp = br.readLine() ; while( tmp != null ){ pw.println( tmp.trim() ); tmp = br.readLine(); } pw.close(); // does a flush() //System.out.println("grabDtd OK"); }
private boolean createURL(String str){ try { theURL = new URL( str ); return true ; }catch(MalformedURLException e){ return false ; } }
Как показано в листинге 9.8, метод reformDoctype извлекает ссылку на файл DTD из строки DOCTYPE, а затем устанавливает значения переменных dtdURL и dtdFname.