pondělí 31. července 2017

Chyba při serializaci objektu pomocí XmlSerializer do existujícího souboru

<?xml version="1.0"?>
<RobotSettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ComPortName>COM9</ComPortName>
  <BaudRate>9600</BaudRate>
  <AutoConnect>false</AutoConnect>
  <Velocity>100</Velocity>
  <MoveDuration>250</MoveDuration>
  <TurningDuration>250</TurningDuration>
  <QueueSize>6</QueueSize>
</RobotSettings>>ngDuration></RobotSettings>
Vyserializováním objektu do již existujícího souboru může dojít k chybě, která za "příznivých podmínek" tj. pokud výsledný text je delší než předchozí (a kompletně přepíše starou verzi), nemusí projevit.
Pokud je ale text kratší a vy použijete špatný FileMode - tak přepíše jen začátek a konec ponechá. Jak je vidět v příkladu. A to vede k nevalidnímu XML a chybě parsování a deserializace objektu.

using (FileStream myFileStream = new FileStream(FileName, FileMode.OpenOrCreate))
using (FileStream myFileStream = new FileStream(FileName, FileMode.CreateNew)) ->  již existuje.

Žádné komentáře:

Okomentovat