También me encantaría escuchar las respuestas a esta pregunta de personas con años de experiencia más que yo.
Personalmente, he implementado varios formatos de archivo para mi trabajo, y he pasado a usar un formato de archivo XML. Mis requisitos y el hardware con el que interactúo cambian todo el tiempo, y no se sabe qué necesitaré agregar al formato en el futuro. Una de las principales ventajas de XML es que está semiestructurada . Por esta razón, generalmente evito la serialización XML automática que proporciona .NET porque creo que lo obliga a esperar un formato exacto.
Mi objetivo era crear un formato XML que permitiera agregar nuevos elementos y atributos en el futuro y que el orden de las etiquetas no importara siempre que fuera posible. Si está seguro de que puede cargar todo su archivo en la memoria, entonces XPATH es probablemente una buena opción.
Si está tratando con archivos particularmente grandes, o por otras razones no puede cargar el archivo de una sola vez, entonces probablemente se quede con un XmlStreamReader y escanee en busca de elementos conocidos y recurra a esos elementos con ReadSubtree y escanee nuevamente ...
BinaryFormatter
.