1 #include "../../include/freenet/messagelistxml.h"
\r
7 MessageListXML::MessageListXML()
\r
12 void MessageListXML::AddMessage(const std::string &date, const long index, const std::vector<std::string> boards)
\r
14 m_messages.push_back(message(date,index,boards));
\r
17 std::vector<std::string> MessageListXML::GetBoards(const long index)
\r
19 if(index>=0 && index<m_messages.size())
\r
21 return m_messages[index].m_boards;
\r
25 return std::vector<std::string>();
\r
29 std::string MessageListXML::GetDate(const long index)
\r
31 if(index>=0 && index<m_messages.size())
\r
33 return m_messages[index].m_date;
\r
41 const long MessageListXML::GetIndex(const long index)
\r
43 if(index>=0 && index<m_messages.size())
\r
45 return m_messages[index].m_index;
\r
53 std::string MessageListXML::GetXML()
\r
56 TiXmlDeclaration *tdec=new TiXmlDeclaration("1.0","UTF-8","");
\r
60 td.LinkEndChild(tdec);
\r
61 tid=new TiXmlElement("MessageList");
\r
62 td.LinkEndChild(tid);
\r
64 for(std::vector<message>::iterator i=m_messages.begin(); i!=m_messages.end(); i++)
\r
66 TiXmlElement *tr=new TiXmlElement("Message");
\r
67 tid->LinkEndChild(tr);
\r
68 tr->LinkEndChild(XMLCreateTextElement("Date",(*i).m_date));
\r
69 tr->LinkEndChild(XMLCreateTextElement("Index",(*i).m_index));
\r
70 TiXmlElement *brds=new TiXmlElement("Boards");
\r
71 tr->LinkEndChild(brds);
\r
72 for(std::vector<std::string>::iterator j=(*i).m_boards.begin(); j!=(*i).m_boards.end(); j++)
\r
74 brds->LinkEndChild(XMLCreateCDATAElement("Board",(*j)));
\r
79 return std::string(tp.CStr());
\r
82 void MessageListXML::Initialize()
\r
87 const bool MessageListXML::ParseXML(const std::string &xml)
\r
90 td.Parse(xml.c_str());
\r
94 std::string tempstr;
\r
97 std::vector<std::string> boards;
\r
99 TiXmlHandle hnd(&td);
\r
105 node=hnd.FirstChild("MessageList").FirstChild("Message").ToNode();
\r
112 TiXmlHandle hnd2(node);
\r
113 txt=hnd2.FirstChild("Date").FirstChild().ToText();
\r
116 date=txt->ValueStr();
\r
118 txt=hnd2.FirstChild("Index").FirstChild().ToText();
\r
121 tempstr=txt->ValueStr();
\r
122 StringFunctions::Convert(tempstr,index);
\r
124 node2=hnd2.FirstChild("Boards").FirstChild("Board").ToNode();
\r
127 if(node2->FirstChild())
\r
129 boards.push_back(node2->FirstChild()->ValueStr());
\r
131 node2=node2->NextSibling("Board");
\r
134 m_messages.push_back(message(date,index,boards));
\r
136 node=node->NextSibling("Message");
\r