以下是我为2课程设计的课程。基本上我想解析维基页面的标题,并将其保存到字符串标题或我可以使用类似retrieveTitle.setText(WikiSearcherExtension.title);
之类的东西从另一个类调用它在eclipse中告诉我局部变量标题根本没有用到存储节点信息。
它不允许我将xml粘贴为代码块,所以这里是我一直使用的网址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 :(得分:0)
在main方法中删除String
之前的title
。你正在覆盖全球的那个。
答案 1 :(得分:0)
之所以从未使用过,就像luiso1979所说的那样。你正在覆盖String。
String title;
String title = (getCharacterDataFromElement(line`));
你应该拥有的是
String title = "";
title = (getCharacterDataFromElement(line));
答案 2 :(得分:0)
您的属性title
是String
,并且在您的for
句子中覆盖了该值(您应该像其他解决方案所说的那样修复),因此您只能获得最后一个节点的标题。我建议您使用其他数据结构,例如List<String> titles = = new ArrayList<String>();
,并存储所有值titles.add(getCharacterDataFromElement(line));