În primul rând, trebuie să decideți schema bazei de date utilizată pentru stocare. Și pentru aceasta este necesar să răspundem la întrebarea "de unde vine XML"?
În cazul în care documentul poate fi încărcat în baza de utilizatori - cel mai bine este de a aborda problema stocării sale ca un depozit de orice fișier - adică, păstrați-l într-un VARBINARY (max). plus un nume de fișier separat ca șir, plus coloane pentru stocarea atributelor fișierului, cum ar fi data creării / modificării.
Dacă XML este format în interiorul programului, atunci este mai bine să îl salvați în nvarchar (max). astfel încât să nu vă creați probleme cu codificarea.
Este destul de ușor să convertiți un document XML într-un șir:
Cu toate acestea, de obicei, nu are sens să se păstreze întregul document ca șir - este suficient să se păstreze elementul rădăcină:
Cea de-a doua cale va "deconecta" de obicei declarațiile XML ușor de recuperat. Acest lucru nu afectează transformarea inversă, deoarece elementul rădăcină rămâne singur un document valid.
Dacă decideți să stocați documentul ca o matrice octet - totul devine ușor mai greu:
Dacă trebuie să specificați o codificare specifică - puteți folosi StreamWriter:
Cel mai simplu mod:
- Efectuați o coloană pentru stocarea tipului nvarchar (MAX).
- Conversia unui fișier xml în șir.
- Introduceți acest rând în baza de date (depinde de modul în care lucrați cu datele)
Dezavantajul acestei metode este că astfel de xml va fi "date moarte" cu care va fi posibil să lucrați numai pe client. Este mult mai bine să specificați tipul coloanei XML (dacă este acceptat de baza dvs. de date - de exemplu, MS SQL și MySQL), atunci acesta poate fi folosit pe server, dar acesta este un subiect foarte larg, care depinde și de baza de date.
răspuns dat dat 23 Aug '16 la 10:55
Nu mi se pare corect să stochez în tipul de date nvarchar (MAX). Stringurile fără restricții duc adesea la probleme. Cum rămâne cu codificarea? Nu crezi asta? - Denis Bubnov 23 Aug '16 la 11:06 am
În principiu, este corect, dar există o nuanță: această metodă funcționează independent de o anumită bază de date, numele fișierului și codarea pot fi stocate în câmpuri separate, nvarchar (MAX) poate fi, în principiu, limitat dacă dimensiunea maximă a fișierului este cunoscută în prealabil. În plus, în întrebarea anterioară, TS utilizate în general varbinar (MAX), care este, în general, rău. Și da, tipul de XML (cu schema) este cu siguranță mai bun, dar va funcționa numai cu o bază de date specifică. - Mirdin 23 Aug '16 la 11:11 am