get list of child nodes
This commit is contained in:
		
							
								
								
									
										20
									
								
								install-64-and-32-bit-linux.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										20
									
								
								install-64-and-32-bit-linux.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,20 @@ | ||||
| ./bootstrap.sh && \ | ||||
| ./configure && \ | ||||
| make && \ | ||||
| sudo make install && \ | ||||
| make clean && \ | ||||
| LDFLAGS="-L/usr/lib32 -m32" CXXFLAGS="-m32" ./configure \ | ||||
|   --libdir=/usr/local/lib32 \ | ||||
|   --build=x86_64 \ | ||||
|   --host=i386 && \ | ||||
| make && \ | ||||
| sudo make install && \ | ||||
| make clean && \ | ||||
| ./configure \ | ||||
|   --prefix=/opt/local/i586-mingw32msvc \ | ||||
|   --build=x86_64 \ | ||||
|   --host=i586-mingw32msvc && \ | ||||
| make && \ | ||||
| sudo make install && \ | ||||
| make clean | ||||
|  | ||||
| @@ -47,10 +47,6 @@ | ||||
|     there of). | ||||
|  | ||||
|     <code> | ||||
|     #include <xml-cxx/xml.hxx> | ||||
|     #include <iostream> | ||||
|     #include <<stream> | ||||
|     [...] | ||||
|     xml::Factory test(xml::Node("persons")             // root node | ||||
|                       <<(xml::Node("person")           // child of persons | ||||
|                          .attr("id", xml::mandatory) | ||||
| @@ -59,13 +55,11 @@ | ||||
|                          <<(xml::Node("friends")       // friends of person | ||||
|                             <<(xml::Node("friend")     // a friend | ||||
|                                .attr("id", xml::mandatory))))); | ||||
|     [...] | ||||
|     try { | ||||
|       std::auto_ptr<xml::Node> persons(test.read(std::ifstream("file.xml))); | ||||
|       // Here we can be sure, that our structure is valid, | ||||
|       // but we must check optional elements before access, otherwise | ||||
|       // we get an exception. | ||||
|       [...] | ||||
|       for (xml::Node::size_type i(0); i<persons.children(); ++i) { | ||||
|         std::cout<<"Person: "<<*persons[i]["name"]; // exception if no "name" | ||||
|         if (persons[i]("friends")) // check if "friends" is set | ||||
| @@ -74,7 +68,6 @@ | ||||
|           std::cout<<" has no friend list"; | ||||
|         std::cout<<std::endl; | ||||
|       } | ||||
|       [...] | ||||
|     } catch (const std::exception& x) { | ||||
|       std::cerr<<"**** Error in file \"file.xml\":"<<std::endl | ||||
|                <<x.what()<<std::endl; | ||||
| @@ -301,6 +294,7 @@ namespace xml { | ||||
|       typedef std::vector<Node*> Contents; | ||||
|     public: | ||||
|       typedef Contents::size_type size_type; | ||||
|       typedef std::vector<Node*> List; | ||||
|       Node(std::string name) throw(); | ||||
|       Node(const Node& o) throw(); | ||||
|       Node& operator=(const Node& o) throw(); | ||||
| @@ -321,6 +315,7 @@ namespace xml { | ||||
|       Node& attr(const std::string& name, bool mandatory) throw(); | ||||
|       std::string attr(const std::string& name) const throw(); | ||||
|       std::string& attr(const std::string& name) throw(); | ||||
|       List list(const std::string& name) const throw(); | ||||
|       bool operator()(const std::string& child) const throw(); | ||||
|       Node& operator<<(const Node& o) throw(cannot_have_children); | ||||
|       Node& operator<<(const Attributes& o) throw(); | ||||
|   | ||||
| @@ -283,9 +283,16 @@ namespace xml { | ||||
|     if (it!=_attributes.end()) return it->second; | ||||
|     return std::string(); | ||||
|   } | ||||
|   std::string& Node::attr(const std::string&name) throw() { | ||||
|   std::string& Node::attr(const std::string& name) throw() { | ||||
|     return _attributes[name]; | ||||
|   } | ||||
|   Node::List Node::list(const std::string& name) const throw() { | ||||
|     List res; | ||||
|     for (Contents::const_iterator it(_contents.begin()); | ||||
|          it!=_contents.end(); ++it) | ||||
|       if ((*it)->_name==name) res.push_back(*it); | ||||
|     return res; | ||||
|   } | ||||
|   bool Node::operator()(const std::string& child) const throw() { | ||||
|     return find(child); | ||||
|   } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user