#include using namespace Upp; struct MyCustomValue : AssignValueTypeNo { int x, y, z; bool operator==(const MyCustomValue& o) const { return false; } void Serialize(Stream& s) {} String ToString() const { return "MyCustomValue"; } unsigned GetHashValue() const { return 0; } bool IsNullInstance() const { return false; } operator Value() const { return RichValue(*this); } MyCustomValue(const Value& v) { *this = ValueTo(v); } MyCustomValue() {} }; void Xmlize(XmlIO xml, MyCustomValue& v) { xml .Attr("x", v.x) .Attr("y", v.y) .Attr("z", v.z) ; } INITBLOCK { RichValue::Register(); } REGISTER_VALUE_XMLIZE(MyCustomValue); CONSOLE_APP_MAIN { StdLogSetup(LOG_COUT|LOG_FILE); MyCustomValue a; a.x = 1; a.y = 2; a.z = 3; Value v = a; LOG(StoreAsXML(v, "Test")); }