XMLBind を coderepos にアップロード

昔書いた C++XML バインディングである XMLBind を coderepos にアップロードしました。

http://coderepos.org/share/browser/lang/cplusplus/XMLBind/

ドキュメントは探さないと出てこないけど、こんな感じ。

たとえば、

struct Date {
   int year;
   int month;
   int day;
};

<Date>
   <year>2003</year>
   <month>12</month>
   <day>18</day>
</Date>

を相互変換したい場合は、

// 変換情報の定義
struct XBTraits<Date> : public XBTraitsBase<Date> {
   XBObjectBindingW GetBinding() {
       return XB_STRUCT(
           XB_BIND("year", year, 0, XBTypeElement, 1) |
           XB_BIND("month", month, 0, XBTypeElement, 1) |
           XB_BIND("day", day, 0, XBTypeElement, 1));
   }
};

// 読込
char* xml = "<date><year>2003</year><month>12</month><day>18</day></date>";
Date date;
try {
 XBParseXML(date, XBGetBinding(&date, "date"), xml, ::strlen(xml));
} catch (XBError e) {
 exit(1);
} catch (XBXMLError e) {
 exit(1);
}

// 保存
std::string xml = XBSerialize(date, XBGetBinding(&date, "date"));
http://ml.tietew.jp/cppll/cppll/thread_articles/9980

DOM とか使ってていいのは中学生までよねー きゃははー