Domanda

Ho fatto un sacco di elaborazione XML in C # negli ultimi tempi e dopo essere tornato in C # da un codice javascript a lungo stint mi mancano davvero alcune delle belle scorciatoie di JS.

Ho fatto un considerevole documento XML composto da lotti, quindi elementi, elementi secondari, ecc. Rappresenta alloggi / voli / biglietti per attrazioni per una prenotazione online.

Finora ho appena percorso Xpathing nel documento per estrarre le informazioni di cui ho bisogno. Ora ho iniziato a spostarli in funzioni di supporto. Quindi, ad esempio, potremmo voler cambiare il modo in cui elaboriamo una prenotazione se ha un volo da una terza parte. Questo è facile da controllare con Xpath, controlliamo solo il valore di un elemento. Quindi ho una funzione di supporto che fa proprio questo, quindi il mio Xpath è solo in un posto e restituisce un bool. Ho avuto solo una dozzina di questi e fino ad ora ho trattato tutto come una prenotazione, ma abbiamo appena fatto un po 'di lavoro che riguardava l'elemento di volo della prenotazione e gli ultimi 4 aiutanti che ho ho appena creato sono molto legati al volo che mi hanno fatto pensare se sto facendo bene.

Ho evitato la necessità di convertire l'intero documento in un oggetto in quanto sarebbe molto doloroso farlo a causa delle sue dimensioni e attualmente non è stato necessario, ma non lo è ancora. Creare tutti quegli oggetti sarebbe un grande dolore e ho lavorato a progetti simili in cui questa strada è stata fatta e fa male solo provare a eseguire il debug o a metterti in testa inizialmente. Non stiamo usando tutto il documento, l'elaborazione che stiamo facendo a malapena ne utilizza il 10%, quindi la de-serializzazione di tutto sembrava un po 'troppo ingegnerizzata. Deserializzarlo in JS sarebbe un gioco da ragazzi, ma C # lo rende così dannatamente lungo. So che potrei usare XSD.exe per eliminare un po 'del dolore, ma trovo che un tale casino da usare senza un buon schema (che ovviamente non esiste).

Ma mi ha fatto pensare, dovremmo SEMPRE creare una vasta collezione di oggetti dal nostro XML o il modo rapido in cui l'ho fatto è ancora accettabile? Sono contento, ma sto solo cercando di pensarci se gli oggetti sarebbero un modo migliore. Se l'abbiamo convertito tutto, almeno sarebbe disponibile nel caso in cui ne avessimo bisogno in progetti futuri.

Sono consapevole che potrebbero esserci dei commenti sulla velocità di xpathing di tutto, ma è abbastanza veloce per quello che vogliamo attualmente, quindi non è un problema qui.

Qualche idea su se sto bene per continuare XPathing?

È stato utile?

Soluzione

Se hai uno schema XML (XSD), probabilmente preferirei sempre l'approccio alla deserializzazione rispetto all'oggetto - è solo più facile e pulito lavorare con oggetti CLR piacevoli.

Se non si dispone di uno schema XML e non è possibile ottenerne uno dall'origine / fornitore dei dati, la decisione non è del tutto chiara. Come dici tu, XSD.EXE può togliere un po 'di dolore dall'equazione, ma un tale schema XML inferito non è in genere né perfetto né spesso molto carino.

Difficile: se ti senti a tuo agio con l'utilizzo di XPath per navigare nel tuo XML, mi atterrerei. Se hai XML che devi analizzare molto spesso, forse la creazione di un XSD potrebbe essere una buona idea alla fine.

Altri suggerimenti

Sì, se hai bisogno solo del 10% dell'XML, XPathing sembra essere OK qui a causa della possibile esagerazione della deserializzazione.

In C # 4.0 e DLR è presente una parola chiave dinamica che consente di esplorare in modo dinamico la struttura XML.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top