Sobby::Config::ParentEntry::ParentEntry(const xmlpp::Element& elem): Entry(elem.get_name() ) { xmlpp::Node::NodeList list = elem.get_children(); for(xmlpp::Node::NodeList::iterator iter = list.begin(); iter != list.end(); ++ iter) { xmlpp::Element* child = dynamic_cast<xmlpp::Element*>(*iter); if(child == NULL) continue; if(child->get_child_text() && !child->get_child_text()->is_white_space()) { ValueEntry* entry = new TypedValueEntry<Glib::ustring>( *child ); m_map[child->get_name()] = entry; } else { m_map[child->get_name()] = new ParentEntry(*child); } } }
void CharacterList::fromXML(const xmlpp::Element &root) { using namespace xmlpp; clear(); Node::NodeList node = root.get_children("character"); for (Node::NodeList::const_iterator it = node.begin(); it != node.end(); it++) { Element *elem = dynamic_cast<Element*>(*it); string name; Attribute *attr = elem->get_attribute("name"); if (attr != NULL) { name = attr->get_value(); } string playerName=""; attr = elem->get_attribute("playername"); if (attr != NULL) { playerName = attr->get_value(); } Character character = Character(name,playerName); character.fromXML(*elem); vCharacters.push_back(character); } }
void Character::fromXML(const xmlpp::Element &root) { using namespace xmlpp; clearSkills(); Node::NodeList list = root.get_children("skill"); for (Node::NodeList::const_iterator it = list.begin(); it != list.end(); it++) { Element *elem = dynamic_cast<Element *>(*it); string value; Attribute *attr = elem->get_attribute("value"); if (attr != NULL) { value = attr->get_value(); } vSkills.push_back(value); } }
void Character::fromXML(const IOConfig &config, const xmlpp::Element &root) { using namespace xmlpp; clearProperties(); Node::NodeList list = root.get_children(config.propertyName()); for (Node::NodeList::const_iterator it = list.begin(); it != list.end(); it++) { Element *elem = dynamic_cast<Element *>(*it); string value; Attribute *attr = elem->get_attribute("value"); if (attr) { value = attr->get_value(); } vProperties.push_back(value); } }
void FileItem::fromXML(const xmlpp::Element &root) throw(xmlpp::exception, invalid_argument, overflow_error) { using namespace xmlpp; Node::NodeList list = root.get_children("file"); string name = ""; if (list.size()==0) { throw xmlpp::exception("Missing file name"); } else { Element *tmp = dynamic_cast<Element*>(list.front()); Attribute *attr = tmp->get_attribute("name"); if (attr!=NULL) { name = attr->get_value(); } } setFileName(name); }