00001 00012 #include "xmlNode.h" 00013 00014 #include <stdio.h> 00015 00016 #include <fstream> 00017 00018 using namespace std; 00019 using namespace sxml; 00020 00024 int main(int argc, char* argv) 00025 { 00026 ifstream fin("test.xml"); 00027 00028 printf("\n"); 00029 00030 if (!fin.good()) { 00031 printf("Cannot open test.xml!\n"); 00032 exit(1); 00033 00034 } 00035 00036 XmlNode* xmlNode = new XmlNode(); 00037 00038 try { 00039 xmlNode->readFromStream(fin); 00040 fin.close(); 00041 00042 } catch (sxml::Exception e) { 00043 printf("Error parsing XML file: exception %d\n", (int) e); 00044 fin.close(); 00045 exit(1); 00046 00047 } 00048 00049 XmlNode* treasures = xmlNode->findFirst("treasures"); 00050 if (treasures != NULL) { 00051 NodeSearch* ns = treasures->findInit("treasure"); 00052 XmlNode* tnode = treasures->findNext(ns); 00053 while (tnode != NULL) { 00054 XmlNode* msgNode = tnode->findFirst("message"); 00055 if (msgNode->children.size() > 0 && 00056 msgNode->children[0]->type == ntTextNode) 00057 { 00058 printf("%s: %s...\n", 00059 tnode->attributes["name"].c_str(), 00060 msgNode->children[0]->name.substr(0, 60).c_str()); 00061 00062 } 00063 00064 tnode = treasures->findNext(ns); 00065 00066 } 00067 00068 00069 } else { 00070 printf("Node 'treasures' not found.\n"); 00071 exit(1); 00072 00073 } 00074 00075 printf("\n"); 00076 00077 }