void WriteDataNode (StreamWriter sw, string prefix, DataNode node, ref int id)
{
string name = node.Name;
string newPrefix = prefix.Length > 0 ? prefix + "." + name: name;
if (node is DataValue) {
DataValue val = (DataValue) node;
string value = EncodeString (val.Value);
sw.WriteLine ("\t\t" + newPrefix + " = " + value);
}
else {
DataItem it = (DataItem) node;
sw.WriteLine ("\t\t" + newPrefix + " = $" + id);
newPrefix = "$" + id;
id ++;
foreach (DataNode cn in it.ItemData)
WriteDataNode (sw, newPrefix, cn, ref id);
}
}