6 #include "tinyxml/tinyxml.h"
8 #include "libwfut/types.h"
9 #include "libwfut/ChannelIO.h"
13 static int parseChannel(TiXmlElement *element, ChannelObject &channel) {
16 const char *name_val = element->Attribute(TAG_name.c_str());
17 if (name_val != NULL) {
18 channel.name = name_val;
21 node = element->FirstChildElement(TAG_description);
22 if (node) node = node->FirstChild();
23 if (node) channel.description = node->Value();
25 node = element->FirstChildElement(TAG_url);
26 if (node) node = node->FirstChild();
27 if (node) channel.url = node->Value();
29 node = element->FirstChildElement(TAG_email);
30 if (node) node = node->FirstChild();
31 if (node) channel.email = node->Value();
33 node = element->FirstChildElement(TAG_logo);
34 if (node) node = node->FirstChild();
35 if (node) channel.logo = node->Value();
40 static int parseChannels(TiXmlNode *element, ChannelList &channels) {
43 TiXmlElement *e = element->FirstChildElement(TAG_channel);
45 ChannelObject channel;
46 parseChannel(e, channel);
47 channels.push_back(channel);
48 e = e->NextSiblingElement();
52 int parseChannelList(
const std::string &filename, ChannelList &channels) {
54 TiXmlDocument doc(filename);
56 if (!doc.LoadFile()) {
60 TiXmlNode *node = doc.FirstChild(TAG_channellist);
67 return parseChannels(node, channels);
71 int parseChannelListXML(
const std::string &xml, ChannelList &channels) {
75 doc.Parse(xml.c_str());
84 TiXmlNode *node = doc.FirstChild(TAG_channellist);
91 return parseChannels(node, channels);