Alo Am un fișier xml în proiectul ASP.NET. Apoi este scris în tabela de baze de date Oracle. Apoi, am citit-o dintr-o aplicație separată de consolă și ar trebui să o sparg înapoi în datele câmpurilor. Și să notăm aceste câmpuri deja în tabela finală unde ar trebui să fie stocate. Acesta este modul în care arată xml-ul meu.
Iată cum l-am citit:
Și trebuie să scot valorile pure care se găsesc între etichete. 1500 de aici este necesar să scoateți numai 1500 într-o siguranță variabilă corespunzătoare. Și așa și pe tot xml-ku. Puteți să-mi spuneți cum nu este dificil și nu este costisitor să faceți acest lucru? Poate cineva are schițe de cod. Cum se poate face. Vă mulțumim anticipat.
În cazul dvs. special, există mai multe abordări.
Voi încerca să le descriu cât mai mult posibil.
1. Deserializarea XML cu XmlSerializer
Copiați textul acestui XML în clipboard.
Deschideți Visual Studio. meniu Edit - Paste Special - Paste XML ca clase.
Studioul va analiza XML-ku-ul și va crea modelul obiect, în acest caz va fi doar o clasă, deoarece XML are o structură destul de simplă.
Am avut acest cod:
În principiu, puteți lucra deja cu acest lucru, dar vă recomand să examinați cu atenție această clasă și să o refacționați:
În primul rând, folosind "chifle" ale versiunilor moderne ale C #, puteți să scăpați de câmpuri inutile, înlocuindu-le cu proprietățile automate, de exemplu, următorul cod:
Puteți înlocui cu o singură proprietate auto:
Atenție, acest lucru trebuie făcut numai dacă nu se impune "logică de afaceri" asupra proprietăților dvs.
În al doilea rând, verificați dacă studioul a condus tipurile de proprietățile, de exemplu, dacă siguranța poate fi, de asemenea, un număr negativ, are sens pentru a schimba tipul de proprietăți pe termen scurt / int / lung în loc de ushort nesemnate.
Și așa mai departe.
Acum putem folosi acest model și îl putem deserializa:
Acum avem un obiect gata în tabelul steel representing our XML și poate fi folosit:
2. Folosind tehnologia LinqToXml
În această abordare, nu aveți nevoie pentru a crea modelul de obiect, XML, ceea ce va reduce codul, dar pe de altă parte, complica un pic mai logică și nu dă gradul de utilizare completă a obiectului (dactilografiere, sfaturi IntelliSense).
Să ne încarcăm XML într-un obiect de tip XDocument:
Totul! Acum puteți extrage orice element / atribut pur și simplu prin trecerea prin arborele XML (principalul lucru nu este să faceți greșeli cu numele):
3. Folosind instrumentele furnizate de driverul ODP.NET pentru extragerea câmpurilor tip XmlType
Dacă utilizați noul oficial Oracle ODP.NET, Driver gestionat. și vă recomandăm să o utilizați, puteți utiliza metoda GetOracleXmlType din clasa OracleDataReader.
În acest caz, nu este necesar să aruncați XmlType într-un șir de pe server:
apoi rescrie codul de citire astfel:
și anume pe ieșire veți primi un XmlDocument deja pregătit. deși este un pic datat și ușor mai greu decât XDocument. dar, pe de altă parte, lucrul cu acesta pe partea clientului poate fi mai profitabil decât aruncarea unui XmlType într-un șir pe partea serverului (și poate nu - trebuie să verificați):