Această publicație precede un număr de articole despre modalitățile alternative de lucru cu XML. "Alternativă", deoarece, de regulă, lucrul cu XML în 1C este limitat la parsarea XML prin citirea secvențială - parsarea liniară a conținutului de text. Dar există și alte căi.
Această publicație precede un număr de articole despre modalitățile alternative de lucru cu XML. "Alternativă", deoarece, de regulă, lucrul cu XML în 1C este limitat la parsarea xml folosind citirea secvențială - parsarea liniară cu linie a conținutului de text. Dar există și alte căi.
DOM se bazează pe reprezentarea unui document de orice structură sub forma unui arbore nod, fiecare nod (nod) al cărui element este, un atribut element, o valoare text a unui element și așa mai departe. Comunicarea dintre noduri este construită pe principiul "părinților-subordonați". Rădăcina documentului (arborele DOM) nu are un părinte. Elementul de blocaj nu are subordonat (astfel de elemente sunt denumite abstract). Astfel, modelul DOM poate fi creat nu numai pentru XML, ci pentru orice document structurat (HTML, XHTML). De exemplu, browserul utilizatorului, prin obținerea codului HTML al unei pagini web de pe Internet, construiește arborele DOM al acestei pagini în memoria RAM a utilizatorului.
Modelul DOM deschide posibilități largi de manipulare a datelor din documente. Puteți crea noduri noi, le puteți introduce la diferite nivele ale copacului, copiați noduri, ștergeți noduri, căutați noduri prin parametrii diferiți și multe altele.
Modelul de document XML DOM este ilustrat în mod clar în figura de mai jos.
Orice limbaj de programare modern include instrumente (parser) pentru a lucra cu un astfel de copac. Primind intrarea conținutului de șir, parserul XML construiește arborele nodului în memoria RAM și efectuează manipulări cu datele copacilor. Avantajul acestei abordări înainte de parsarea liniilor este evident: o interogare a arborelui vă permite să selectați datele de care aveți nevoie fără a trece prin întreaga linie a documentului, deoarece în RAM există o reprezentare completă a elementelor cu toate interrelațiile.
Pro-urile de analiză a liniilor: nevoia de resurse este mai mică. Contra: mult timp pentru a obține datele de care aveți nevoie pentru a citi linia după linia întregului fișier, complexitatea codului de program atunci când parsarea documentelor XML cu structură complexă.
Avantajul eșantionării prin DOM este rata de eșantionare a datelor, simplitatea codului. Contra: solicitarea de resurse, construirea și interogarea DOM consumă RAM și puterea procesorului.
3. Vasily Kazmin (awk) 680 Joi, 13 August 2012 12:08 În prezent în subiectul acesta
Pro-urile de analiză a liniilor: nevoia de resurse este mai mică.
Contra: mult timp. pentru a obține datele de care aveți nevoie pentru a citi linia după linia întregului fișier, complexitatea codului de program atunci când parsarea documentelor xml cu structură complexă.
Avantajul eșantionării prin DOM este rata de eșantionare a datelor. Simplitatea codului programului.
Contra: solicitarea de resurse, construirea și interogarea DOM consumă RAM și puterea procesorului.
Și este posibil în mai multe detalii mai puțin decât ceea ce și mai repede decât asta. Dacă scrieți codul pentru o lungă perioadă de timp, acesta poate fi da. Dacă primiți date pentru o lungă perioadă de timp, atunci nu.
Despre viteza de recuperare a datelor - nu este așa. În casă există cel puțin două treceri, iar în parser puteți reduce totul la unul.
Concluzia mea (din experiența de lucru):
Deci, casa este mai convenabilă, iar curgerea este mai rapidă.
4. Anatolii Karasev (KapasMordorov) 408 Marți, 13 August 2012 13:44 Currently online
(4)
Da, "Avantajul DOM: rata de eșantionare" pare a fi un anecdot. Mai ales într-un moment în care memoria RAM este scăzută.
5. Alex Yu (AlexO) 119 Joi, 14 August 2012 15:00 Momentan în coș
Dar toți se bazează pe reprezentarea de bază a documentelor xml sub formă de DOM
Ce fel de "reprezentare de bază" este în cadrul standardului XML și cu ce fel de frică "modelul de depunere a documentelor" a devenit brusc de bază în raport cu XML?
6. Alex Yu (AlexO) 119 Luni, 14 August 2012 15:05 Momentan pe subiect
7. Alexander Kuzin (sashocq) 190 Joi, 15 August 2012 08:54 În prezent în subiect
Sunt de acord cu (6). Acesta a fost întotdeauna principala cale. Iar pentru fișierele mari, DOM care nu se încadrează în memorie, ei caută deja alternative de tip citire secvențială. Schimbați titlul.
8. Alex Yu (AlexO) 119 Joi, 15 August 2012 10:30 Momentan în coș
(7) sashocq,
este necesar să se clarifice - aceasta a fost întotdeauna principala modalitate în schimbul de documente. sau schimbul de obiecte asemănătoare în structură cu documentele.
9. Sergey Nazarenko (Hobbit_Jedi) 02.06.15 14:59 În prezent în colaj
Ceva ce am (8.3.5.1443), prima, cea mai preferată opțiune prin CalculateExpression XPath nu funcționează (chiar și primul element rădăcină nu vrea să aleagă, și nu pe o cale lungă).
A trebuit să fac acest lucru prin intermediul "Nodului tuturor de la documentul DocumentDOM.DonitoryNodes" Ciclul "
10. Artyom Shalnev (88wau24ru) 10 10.03.16 05:53 Acum în subiect
Creat în 08.08.2012 10:51
Actualizare0.09.08.12 23:48
Cod deschis Nu este listat