6#include "tinyxml/tinyxml.h"
8#include "libwfut/types.h"
9#include "libwfut/ChannelIO.h"
13static int parseMirror(TiXmlElement *element, MirrorObject &mirror) {
17 node = element->FirstChildElement(TAG_name);
18 if (node) node = node->FirstChild();
19 if (node) mirror.name = node->Value();
21 node = element->FirstChildElement(TAG_url);
22 if (node) node = node->FirstChild();
23 if (node) mirror.url = node->Value();
28static int parseMirrors(TiXmlNode *element, MirrorList &mirrors) {
31 TiXmlElement *e = element->FirstChildElement(TAG_mirror);
34 parseMirror(e, mirror);
35 mirrors.push_back(mirror);
36 e = e->NextSiblingElement();
40int parseMirrorList(
const std::string &filename, MirrorList &mirrors) {
42 TiXmlDocument doc(filename);
44 if (!doc.LoadFile()) {
48 TiXmlNode *node = doc.FirstChild(TAG_mirrorlist);
55 return parseMirrors(node, mirrors);
59int parseMirrorListXML(
const std::string &xml, MirrorList &mirrors) {
63 doc.Parse(xml.c_str());
69 TiXmlNode *node = doc.FirstChild(TAG_mirrorlist);
76 return parseMirrors(node, mirrors);