When you write to a file OS doesn't write immediately to your disk - it writes to multi-level caches: file system cache, block cache, device cache etc.
Periodically, caches are "flushed" - written to underlying device. That's what, for example, umount
does.
So when your windows application writes some XML to file - it writes to NTFS cache. Reading this file on windows will be done through the same cache and that's why it consistent on Windows. But your Linux box does know nothing about that cache - it has it's own caches.
To avoid this problem you should write on Windows with direct I/O.