0

以下は、2クラスのプロジェクト用のクラスです。基本的に、wikiページのタイトルを解析し、それを文字列のタイトルに保存したい、またはEclipseのようなものを使用して別のクラスから呼び出すことができるものに保存するとretrieveTitle.setText(WikiSearcherExtension.title); 、ノード情報を保存するためにローカル変数のタイトルがまったく使用されていないことがわかります

xml をコードのブロックとして貼り付けることはできないので、ここに私が使用している URL を示しますhttp://en.wikipedia.org/w/api.php?action=query&prop=revisions&format=xml&rvprop=timestamp&rvlimit=1&rvtoken=rollback&titles =テスト&リダイレクト=

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();
            }
        }       
    }
}
4

3 に答える 3

0

あなたの属性titleは aStringであり、あなたのfor文では値をオーバーライドするため (他のソリューションが言ったように修正する必要があります)、最後のノードのタイトルのみを取得します。List<String> titles = = new ArrayList<String>();次のような別のデータ構造を使用して、すべての値を保存することをお勧めしますtitles.add(getCharacterDataFromElement(line));

于 2013-09-27T15:20:49.330 に答える
0

使用されなかった理由は、luiso1979 が言ったとおりです。文字列をオーバーライドしています。

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

あなたが持つべきものは

String title = "";
title = (getCharacterDataFromElement(line));
于 2013-09-27T15:15:34.177 に答える