--- SiteMapper/SiteMapper.cpp 2004/04/01 07:21:15 144 +++ SiteMapper/SiteMapper.cpp 2004/06/04 09:40:33 154 @@ -13,7 +13,7 @@ #include "Page.hpp" string program; -bool debug = false; +bool debug(false); int main(int argc, char* argv[]) { @@ -21,7 +21,7 @@ int main(int argc, char* argv[]) string siteIndex, siteMap; - for (int index = 1; index < argc; index++) + for (int index(1); index < argc; index++) { string arg(argv[index]); Matcher matcher; @@ -42,13 +42,7 @@ int main(int argc, char* argv[]) if (siteIndex != "" && siteMap != "") { - XMLPlatformUtils::Initialize(); - XPathEvaluator::initialize(); - SiteMapper mapper(siteIndex, siteMap); - - XPathEvaluator::terminate(); - XMLPlatformUtils::Terminate(); } else { @@ -67,50 +61,26 @@ SiteMapper::SiteMapper(const string& sit void SiteMapper::oldMap(const string& siteMap) { - support.setParserLiaison(&liaison); - - XalanDOMString file(siteMap.c_str()); - LocalFileInputSource source(file.c_str()); - - XalanDocument* document = liaison.parseXMLStream(source); - - if (document == 0) return; + ext::Handle document(xml::Parse(siteMap)); + ext::Handle list(*document/"page"/"section"/"list"); - XalanNode* list = evaluator.selectSingleNode(support, document, - XalanDOMString("/page/section/list").c_str()); - - if (list == 0) return; - - item = evaluator.createXPath(XalanDOMString("item").c_str()); - address = evaluator.createXPath(XalanDOMString("link/@address").c_str()); - link = evaluator.createXPath(XalanDOMString("link").c_str()); - this->list = evaluator.createXPath(XalanDOMString("list").c_str()); + comment = *document/"comment()"; oldMap(pages, list); - - evaluator.destroyXPath(item); - evaluator.destroyXPath(address); - evaluator.destroyXPath(link); - evaluator.destroyXPath(this->list); } -void SiteMapper::oldMap(vector& pages, XalanNode* list) +void SiteMapper::oldMap(vector& pages, xml::Node* list) { - NodeRefList nodes = evaluator.selectNodeList(support, list, *item); + xml::NodeSet nodes(*list/"item"); - for (int index = 0; index < nodes.getLength(); index++) + for (xml::NodeSet::Iterator node(nodes.Begin()); node != nodes.End(); + ++node) { - XalanNode* node = nodes.item(index); - ostringstream url, title; - - url << evaluator.evaluate(support, node, *address)->str(); - title << evaluator.evaluate(support, node, *link)->str(); - - Page page(url.str(), title.str()); - XalanNode* list = evaluator.selectSingleNode(support, node, - *(this->list)); + string url(**node/"link"/"@address"), title(**node/"link"); + Page page(url, title); + ext::Handle list(**node/"list"); - if (list != 0) oldMap(page.getChildren(), list); + if (!list.IsEmpty()) oldMap(page.getChildren(), list); pages.push_back(page); } @@ -118,41 +88,22 @@ void SiteMapper::oldMap(vector& pa void SiteMapper::newIndex(const string& siteIndex) { - XalanDOMString file(siteIndex.c_str()); - LocalFileInputSource source(file.c_str()); + ext::Handle document(xml::Parse(siteIndex)); + xml::NodeSet nodes(*document/"index"/"page"); - XalanDocument* document = liaison.parseXMLStream(source); - - if (document == 0) return; - - address = evaluator.createXPath(XalanDOMString("address").c_str()); - port = evaluator.createXPath(XalanDOMString("port").c_str()); - path = evaluator.createXPath(XalanDOMString("path").c_str()); - title = evaluator.createXPath(XalanDOMString("title").c_str()); - - NodeRefList nodes = evaluator.selectNodeList(support, document, - XalanDOMString("/index/page").c_str()); - - for (int index = 0; index < nodes.getLength(); index++) + for (xml::NodeSet::Iterator node(nodes.Begin()); node != nodes.End(); + ++node) { - XalanNode* node = nodes.item(index); - ostringstream address; - - address << evaluator.evaluate(support, node, *(this->address))->str(); + string address(**node/"address"); + string port(**node/"port"); - double port = evaluator.evaluate(support, node, *(this->port))->num(); - - if (port >= 0 && port <= 65535) + if (!port.empty()) { - address << ':' << int(port); + address += ':' + port; } - ostringstream path, title; - - path << evaluator.evaluate(support, node, *(this->path))->str(); - title << evaluator.evaluate(support, node, *(this->title))->str(); - - Page page(address.str(), path.str(), title.str()); + string path(**node/"path"), title(**node/"title"); + Page page(address, path, title); Matcher matcher; if (page == matcher(string("^Douglas\\sThrift's\\sWebsite\\s\\|\\sDou") @@ -180,16 +131,11 @@ void SiteMapper::newIndex(const string& >(page.getAddress(), items)).first->second.insert(pair(page.getChildOf(), page)); } - - evaluator.destroyXPath(address); - evaluator.destroyXPath(port); - evaluator.destroyXPath(path); - evaluator.destroyXPath(title); } bool SiteMapper::newIndex(vector& pages, Page& page) { - for (unsigned index = 0; index < pages.size(); index++) + for (unsigned index(0); index < pages.size(); ++index) { if (pages[index] == page.getAddress()) { @@ -229,13 +175,13 @@ void SiteMapper::newMap(const string& si << "\n" << "\n" - << "\n" + << "\n" << "\n" << "\tSitemap\n" << "\t
\n" << "\t\t\n"; - for (unsigned index = 0; index < pages.size(); index++) + for (unsigned index(0); index < pages.size(); ++index) { if (newPages.find(pages[index].getAddress()) != newPages.end()) { @@ -256,12 +202,12 @@ void SiteMapper::newMap(const string& si void SiteMapper::newMap(vector& pages, const string& childOf, multimap& newPages) { - for (unsigned index = 0; index < pages.size(); index++) + for (unsigned index(0); index < pages.size(); ++index) { newMap(pages[index].getChildren(), pages[index].getPath(), newPages); } - for (multimap::iterator itor = newPages.lower_bound(childOf); + for (multimap::iterator itor(newPages.lower_bound(childOf)); itor != newPages.upper_bound(childOf); itor++) { pages.push_back(itor->second);