Vorrei anche amare per ascoltare le risposte a questa domanda di persone con anni di esperienza in più rispetto a me.
Ho personalmente implementato diversi formati di file per il mio lavoro e mi sono trasferito a utilizzare un formato di file XML. Le mie esigenze e l'hardware con cui interagisco cambiano continuamente, e non c'è modo di dire cosa avrò bisogno di aggiungere al formato in futuro. Uno dei principali vantaggi di XML è che è semi-strutturato . Per questo motivo, in genere evito la serializzazione XML automatica fornita da .NET perché ritengo che imponga di aspettarsi un formato esatto.
Il mio obiettivo era creare un formato XML che consentisse l'aggiunta di nuovi elementi e attributi in futuro e che l'ordine dei tag non importasse quando possibile. Se sei sicuro di poter caricare l'intero file in memoria, XPATH è probabilmente una buona scelta.
Se hai a che fare con file particolarmente grandi, o per altri motivi non riesci a caricare il file tutto in una volta, probabilmente ti verrà lasciato usare XmlStreamReader e scansionerai elementi conosciuti e ricorsivi in quegli elementi con ReadSubtree e scansionerai di nuovo .. .