Vra

Ek het die afgelope tyd baie XML-verwerking in C# gedoen en nadat ek teruggekom het na C# van 'n lang tyd Javascript-kodering, mis ek regtig 'n paar van die lekker kortpaaie van JS.

Ek het 'n aansienlike XML-dokument wat bestaan ​​uit baie so elemente, kind elemente, ens.Verteenwoordig Akkommodasie/Vlugte/Besienswaardighede kaartjies vir 'n aanlyn bespreking.

Tot dusver het ek net deur die dokument gesoek om die inligting uit te haal wat ek nodig het.Ek het dit nou na helperfunksies begin verskuif.So byvoorbeeld wil ons dalk verander hoe ons 'n bespreking verwerk as dit 'n vlug van 'n derde party het.Dit is maklik om met Xpath na te gaan, ons kyk net na die waarde van 'n element.So ek het 'n helper funksie wat net dit doen so my Xpath is net op een plek en gee 'n bool.Ek het net omtrent 'n dosyn hiervan en tot nou toe het ek die hele ding as 'n bespreking hanteer, maar ons het pas 'n bietjie werk gedoen wat alles oor die vlugelement van die bespreking en die laaste 4 helpers wat ek gegaan het Ek het sopas geskep is baie vlugverwant wat my laat dink het of ek dit reg doen.

Ek het die behoefte vermy om die hele dokument in 'n objek te omskep, want dit sou net baie baie pynlik wees om te doen as gevolg van sy grootte en tans is dit nie nodig nie, is dit nog steeds nie regtig nie.Om al daardie voorwerpe te skep, sal 'n groot pyn wees en ek het aan soortgelyke projekte gewerk waar hierdie roete gedoen is en dit maak net seer om dit te probeer ontfout of jou kop om dit te kry.Ons gebruik nie al die dokumente nie, die verwerking wat ons doen gebruik skaars 10% daarvan, so die de-serialisering van alles het 'n bietjie oorgemanipuleerd gelyk.Om dit in JS te deserialiseer sal 'n briesie wees, maar C# maak dit net so verdomp langdradig.Ek weet ek kan XSD.exe gebruik om van die pyn weg te neem, maar ek vind so 'n gemors om te gebruik sonder 'n goeie skema (wat natuurlik nie bestaan ​​nie).

Maar dit het my laat dink, moet ons ALTYD 'n groot versameling voorwerpe uit ons XML skep of is die vinnige manier waarop ek dit gedoen het steeds aanvaarbaar?Ek is tevrede daarmee, maar probeer net deurdink of Objects 'n beter manier sou wees.As ons dit alles omskep het, sou dit ten minste beskikbaar wees ingeval ons dit in toekomstige projekte benodig.

Ek is bewus daarvan dat daar dalk 'n paar opmerkings oor die spoed van xpathing alles is, maar dit is vinnig genoeg vir wat ons tans wil hê, so dit is nie 'n probleem hier nie.

Enige gedagtes oor of ek reg is om voort te gaan met XPathing?

Was dit nuttig?

Oplossing

As jy 'n XML-skema (XSD) het, sal ek waarskynlik altyd die deserialisering-na-objek-benadering verkies - dit is net makliker en skoner om met mooi CLR-voorwerpe te werk.

As jy nie 'n XML-skema het nie en nie een van die bron/verskaffer van jou data kan kry nie, dan is die besluit nie heeltemal duidelik nie.Soos jy se, XSD.EXE kan 'n bietjie van die pyn uit die vergelyking haal, maar so 'n afgeleide XML-skema is tipies nie perfek of dikwels baie mooi nie.

Moeilike een - as jy gemaklik voel om XPath te gebruik om jou XML te navigeer, sal ek daarby hou.As jy XML het wat jy baie gereeld moet ontleed, kan die skep van 'n XSD dalk uiteindelik 'n goeie idee wees.

Ander wenke

Ja, as jy net 10% van die XML benodig, lyk dit of XPathing hier in orde is as gevolg van moontlike deserialisering te veel.

In C# 4.0 en DLR is daar 'n dinamies sleutelwoord wat toelaat om XML-struktuur dinamies te verken.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top