2013-09-27 3 views
0

Ниже приведен класс, который у меня есть для проекта класса 2. В основном я хочу проанализировать название страницы wiki и сохранить его в заголовке строки или что-то, что я могу вызвать из другого класса, используя что-то вроде retrieveTitle.setText(WikiSearcherExtension.title); В eclipse, сообщая мне, что заголовок локальной переменной не используется вообще для хранения информации о узле ,Не удалось сохранить вход узла в строку

Это Wouldnt позвольте мне вставить XML как блок кода так вот URL я использую http://en.wikipedia.org/w/api.php?action=query&prop=revisions&format=xml&rvprop=timestamp&rvlimit=1&rvtoken=rollback&titles=test&redirects=

public class WikiParserTrials { 

    private String wikiInformation; 
    private String wikiUrl; 
    String title; 

    public void urlRefactor(String url) throws IOException { 
     String wikiPageName = url.replaceAll(" ", "_"); 
     wikiUrl = "http://en.wikipedia.org/w/api.php?action=query&prop=revisions&format=xml&rvprop=timestamp&rvlimit=1&rvtoken=rollback&titles=test&redirects="; 
     setUrlInformation(); 
    } 

    private void setUrlInformation() throws IOException { 
     URL url = new URL(wikiUrl); 
     URLConnection connection = url.openConnection(); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); 

     wikiInformation = ""; 
     for (String line = reader.readLine(); line != null; line = reader.readLine()) { 
      wikiInformation += line; 
     } 
    } 

    public class ReadAndPrintXMLFile { 

     public void main(String argv[]) { 
      try { 
       DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
       DocumentBuilder db = dbf.newDocumentBuilder(); 
       InputSource is = new InputSource(); 
       is.setCharacterStream(new StringReader(wikiInformation)); 

       Document doc = db.parse(is); 
       NodeList nodes = doc.getElementsByTagName("normalized"); 

       for (int i = 0; i < nodes.getLength(); i++) { 
        Element element = (Element) nodes.item(i); 

        NodeList name = element.getElementsByTagName("to"); 
        Element line = (Element) name.item(0); 
        String title = (getCharacterDataFromElement(line)); 

       } 

      } 
      catch (Throwable t) { 
       t.printStackTrace(); 
      } 
     }  
    } 
} 
+0

Что затмение говорит вам, что название не используется, и это правда, вам нужно сохранить его в свойстве класса. Обратите внимание, что вы повторно объявляете заголовок локально. Таким образом, название собственности никогда не получает этого значения. – luiso1979

ответ

0

Удалить String перед тем title внутри основного метода. Вы переписываете глобальный.

0

Причина, по которой ее никогда не использовали, так называется luiso1979. Вы переопределяете строку.

String title; 
String title = (getCharacterDataFromElement(line`)); 

, что вы должны иметь это

String title = ""; 
title = (getCharacterDataFromElement(line)); 
0

Вашего атрибут title является String и в вашем for предложения переопределить значение (вы должны исправить, как сказали другие решения), так что вы получите только название последнего узла. Я предлагаю вам использовать другую структуру данных, такую ​​как List<String> titles = = new ArrayList<String>();, и сохранить все значения titles.add(getCharacterDataFromElement(line));

Смежные вопросы