Because you writing the object of type XYZ and are using the size of an instance of XYZ to determine how many bytes to write.
If you just want to write the string "Name", you need to get the pointer to the data and specify the number of bytes in the string (in this case, the length of the string).
I.e.
Fil.write(ob.Name.c_str(), ob.Name.length());
Regards,
Ian.