FUNCTION Str2Object LPARAMETERS tcStr LOCAL loRetVal, lcName, lvValue loRetVal = CREATEOBJECT("Empty") CREATE CURSOR crsProps (Name C(32), Type C(1), Val M) XMLTOCURSOR(lcXml, "crsProps",8192) SCAN lcName = ALLTRIM(Name) DO CASE CASE Type = "N" OR Type = "Y" lvValue = EVAL(Val) CASE Type = "D" lvValue = TTOD(CTOT(Val + "T00:00:00")) CASE Type = "T" lvValue = CTOT(Val) CASE Type = "L" lvValue = CAST(Val AS L) CASE Type = "Q" lvValue = EVALUATE("0h" + Val) OTHERWISE lvValue = ALLTRIM(Val) ENDCASE =ADDPROPERTY(loRetVal,lcName,lvValue) ENDSCAN USE IN crsProps RETURN loRetVal *------------------------------------------------ FUNCTION Object2Str LPARAMETERS toObject LOCAL laFields[1], lnFieldNumber, lcFieldName, lcValue, lcType, lcXml CREATE CURSOR Prop(Name C(32), Type C(1), Val M) FOR lnFieldNumber = 1 TO AMEMBERS(laFields,toObject) lcFieldName = laFields[lnFieldNumber] lcValue = EVALUATE("toObject." + lcFieldname) lcType = TYPE("lcValue") DO CASE CASE lcType == "N" OR lcType == "Y" lcValue = TRANSFORM(lcValue) CASE lcType == "D" lcValue = LEFT(TTOC(DATE(),3),10) CASE lcType == "T" lcValue = TTOC(DATE(),3) CASE lcType == "L" lcValue = TRANSFORM(lcValue) CASE lcType == "Q" lcValue = STRCONV(o.varbinarytype, 15) OTHERWISE lcValue = ALLTRIM(lcValue) ENDCASE INSERT INTO Prop VALUES(lcFieldName, lcType, lcValue ) ENDFOR CURSORTOXML(ALIAS(), "lcXml") USE IN Prop RETURN lcXml *------------------------------------------------ * Example TEXT TO lcXml NOSHOW <?xml version = "1.0" encoding="Windows-1252" standalone="yes"?> <VFPData> <prop> <name>LogicalType</name> <type>L</type> <val>.T.</val> </prop> <prop> <name>NumericType</name> <type>N</type> <val>123456.789</val> </prop> <prop> <name>IntegerType</name> <type>N</type> <val>123456</val> </prop> <prop> <name>MoneyType</name> <type>Y</type> <val>123456.7890</val> </prop> <prop> <name>DateType</name> <type>D</type> <val>2008-04-06</val> </prop> <prop> <name>DateTimeType</name> <type>T</type> <val>2008-04-06T08:05:36</val> </prop> <prop> <name>StringType</name> <type>C</type> <val>Converts a Visual FoxPro cursor to XML.</val> </prop> <prop> <name>VarbinaryType</name> <type>Q</type> <val>48656c6c6f</val> </prop> </VFPData> ENDTEXT o = Str2Object(lcXml) ? Object2Str(o)>I can save a data object to a textstring, and rebuild the data object from the text string. I save the data in a memo field.