1 #include "../../include/freenet/messagexml.h"
\r
7 MessageXML::MessageXML()
\r
12 std::string MessageXML::GetXML()
\r
15 TiXmlDeclaration *tdec=new TiXmlDeclaration("1.0","UTF-8","");
\r
19 td.LinkEndChild(tdec);
\r
20 tid=new TiXmlElement("Message");
\r
21 td.LinkEndChild(tid);
\r
23 tid->LinkEndChild(XMLCreateTextElement("Date",m_date));
\r
24 tid->LinkEndChild(XMLCreateTextElement("Time",m_time));
\r
25 tid->LinkEndChild(XMLCreateCDATAElement("Subject",m_subject));
\r
26 tid->LinkEndChild(XMLCreateCDATAElement("MessageID",m_messageid));
\r
27 tid->LinkEndChild(XMLCreateCDATAElement("ReplyBoard",m_replyboard));
\r
28 tid->LinkEndChild(XMLCreateCDATAElement("Body",m_body));
\r
30 TiXmlElement *brds=new TiXmlElement("Boards");
\r
31 tid->LinkEndChild(brds);
\r
32 for(std::vector<std::string>::iterator i=m_boards.begin(); i!=m_boards.end(); i++)
\r
34 brds->LinkEndChild(XMLCreateCDATAElement("Board",(*i)));
\r
37 if(m_inreplyto.size()>0)
\r
39 TiXmlElement *rply=new TiXmlElement("InReplyTo");
\r
40 tid->LinkEndChild(rply);
\r
41 for(std::map<long,std::string>::iterator j=m_inreplyto.begin(); j!=m_inreplyto.end(); j++)
\r
43 TiXmlElement *mess=new TiXmlElement("Message");
\r
44 rply->LinkEndChild(mess);
\r
45 mess->LinkEndChild(XMLCreateTextElement("Order",(*j).first));
\r
46 mess->LinkEndChild(XMLCreateCDATAElement("MessageID",(*j).second));
\r
51 return std::string(tp.CStr());
\r
54 void MessageXML::Initialize()
\r
61 m_inreplyto.clear();
\r
65 const bool MessageXML::ParseXML(const std::string &xml)
\r
68 td.Parse(xml.c_str());
\r
72 TiXmlHandle hnd(&td);
\r
78 txt=hnd.FirstChild("Message").FirstChild("Date").FirstChild().ToText();
\r
81 m_date=txt->ValueStr();
\r
83 txt=hnd.FirstChild("Message").FirstChild("Time").FirstChild().ToText();
\r
86 m_time=txt->ValueStr();
\r
88 txt=hnd.FirstChild("Message").FirstChild("Subject").FirstChild().ToText();
\r
91 m_subject=txt->ValueStr();
\r
93 txt=hnd.FirstChild("Message").FirstChild("MessageID").FirstChild().ToText();
\r
96 m_messageid=txt->ValueStr();
\r
98 txt=hnd.FirstChild("Message").FirstChild("ReplyBoard").FirstChild().ToText();
\r
101 m_replyboard=txt->ValueStr();
\r
103 txt=hnd.FirstChild("Message").FirstChild("Body").FirstChild().ToText();
\r
106 m_body=txt->ValueStr();
\r
109 node2=hnd.FirstChild("Message").FirstChild("Boards").FirstChild("Board").ToNode();
\r
112 if(node2->FirstChild())
\r
114 m_boards.push_back(node2->FirstChild()->ValueStr());
\r
116 node2=node2->NextSibling("Board");
\r
119 node2=hnd.FirstChild("Message").FirstChild("InReplyTo").FirstChild("Message").ToNode();
\r
122 std::string orderstr;
\r
124 std::string messageid="";
\r
125 TiXmlHandle hnd2(node2);
\r
126 txt=hnd2.FirstChild("Order").FirstChild().ToText();
\r
129 orderstr=txt->ValueStr();
\r
130 StringFunctions::Convert(orderstr,order);
\r
132 txt=hnd2.FirstChild("MessageID").FirstChild().ToText();
\r
135 messageid=txt->ValueStr();
\r
138 if(order!=-1 && messageid!="")
\r
140 m_inreplyto[order]=messageid;
\r
143 node2=node2->NextSibling("Message");
\r