// Manage redirects and missing pages
updateRedirect(root, pages);
// Retrieve pages
XPath xpa = XPath.newInstance("/api/query/pages/page");
List results = xpa.selectNodes(root);
Iterator iter = results.iterator();
while (iter.hasNext()) {
Element pageNode = (Element) iter.next();
String title = pageNode.getAttributeValue("title");
Integer pageId = null;
try {
String pageIdValue = pageNode.getAttributeValue("pageid");
if (pageIdValue != null) {
pageId = Integer.valueOf(pageIdValue);
}
} catch (NumberFormatException e) {
System.err.println("Incorrect page id");
}
String namespace = pageNode.getAttributeValue("ns");
for (Page tmpPage : pages) {
Iterator<Page> itPage = tmpPage.getRedirectIteratorWithPage();
while (itPage.hasNext()) {
Page page = itPage.next();
boolean samePage = false;
if ((pageId != null) && (page.getPageId() != null)) {
samePage = pageId.equals(page.getPageId());
} else {
samePage = Page.areSameTitle(page.getTitle(), title);
}
if (samePage) {
page.setNamespace(namespace);
updatePageInformation(pageNode, page);
// Retrieve revisions
if (!Boolean.FALSE.equals(page.isExisting())) {
XPath xpaRevisions = XPath.newInstance("revisions/rev");
Element revNode = (Element) xpaRevisions.selectSingleNode(pageNode);
if (revNode != null) {
page.setContents(revNode.getText());
page.setExisting(Boolean.TRUE);
page.setRevisionId(revNode.getAttributeValue("revid"));
page.setContentsTimestamp(revNode.getAttributeValue("timestamp"));