Par šo rīku
XML formatējums iedala ligzdotos elementus, lai dokumenta hierarhija kļūtu redzama. Kompakts XML — viss vienā rindā — ir tehniski derīgs un noderīgs pārraidei, taču nav lasāms cilvēkiem. Formatētais XML pievieno rindiņu pārtraukumus starp elementiem un ievelk bērnus vecāku iekšienē, padarot to skenējamu, maināmu un rediģējamu ar roku.
Šis formatētājs parsē ievadi, izmantojot DOMParser, lai apstiprinātu pareizu formu, un pēc tam veic iegūto DOM, lai izvadītu atkāpi. Komentāri, apstrādes instrukcijas un CDATA sadaļas tiek saglabātas. Pašaizvēršanās birkas (tiem, kurām nav bērnu) tiek turētas kompaktas vienā rindā; atzīmes ar bērniem ir izkliedētas vairākās rindās ar atkāpēm.
Divu atstarpju atkāpe ir noklusējuma vērtība, kas atbilst visizplatītākajai XML konvencijai. Formatētājs ir konservatīvs attiecībā uz pārformatēšanu: tiek saglabāta esošā struktūra, mainās tikai atstarpes starp elementiem. Dati tiek pārvietoti pa jebkuru XML parsētāju identiski pirms un pēc formatēšanas.
Kāpēc formatēt XML
Kompaktais XML nav lasāms. SOAP atbildes, RSS plūsmas un daudzi konfigurācijas faili tiek saņemti kā vienas rindas XML, kas ir tehniski derīgs, bet praktiski nepārskatāms. Formatēšana atklāj dokumenta struktūru, ļauj atrast konkrētus elementus un padara versijas kontroles atšķirības jēgpilnas.
Formatēšana kalpo arī kā derīguma pārbaude. Ja formatēšanas laikā neizdodas parsēt XML, kļūdas ziņojums identificē problēmu — parasti neaizvērtus tagus, neatbilstošus elementu nosaukumus vai nederīgas rakstzīmes. XML kļūdu uztveršana pirms nosūtīšanas stingriem patērētājiem ietaupa atkļūdošanas laiku.
Tehniskās detaļas
DOMParser izveido XML DOM. Formatētājs vispirms staigā pa koku dziļumā, izstaro sākuma atzīmes, atkāpes un aizvēršanas atzīmes. Elementu atribūti tiek saglabāti sākuma tagā; atribūtu secība atbilst avotam.
Teksta mezglos tiek saglabāta nozīmīga atstarpe — formatētājs nevar droši mainīt satura atstarpi, jo tas var būt nozīmīgs (XML vietas saglabāšanas noteikumi dažādās shēmās atšķiras). Mainās tikai atstarpes starp elementiem.
Pašaizvēršanās elementi (nav bērnu) izstaro kā <tag attr="val"/>. Elementi ar tikai teksta saturu tiek izvadīti kā <tag>teksts</tag>. Elementi ar elementu bērniem izstaro vairākās līnijās ar atkāpēm. CDATA sadaļas, komentāri un apstrādes instrukcijas izstaro ar oriģinālajiem norobežotājiem un saturu.
Bieži uzdotie jautājumi
- Kādas XML kļūdas tas atklāj?
- Šis rīks nosaka neaizvērtus tagus, neatbilstošus sākuma/aizvēršanas tagus, nederīgas rakstzīmju atsauces, trūkstošus saknes elementus, nepareizi veidotus atribūtus un kodēšanas problēmas. Kļūdu ziņojumos ir iekļauti rindu numuri, lai palīdzētu noteikt problēmas.
- Vai formatēšana maina XML saturu?
- Formatēšana pielāgo tikai atstarpes un atkāpi starp elementiem. Elementa saturs, atribūti, CDATA sadaļas un apstrādes instrukcijas tiek saglabātas tieši tā, kā ievadītas.
- Vai tas var apstrādāt lielus XML failus?
- Šis rīks pārlūkprogrammā apstrādā failus līdz pat vairākiem megabaitiem. Ļoti lieliem XML dokumentiem (50 MB+), labākai veiktspējai apsveriet iespēju izmantot komandrindas rīkus, piemēram, xmllint.
- Vai tas atbalsta XML nosaukumvietas?
- Jā. Formatētājs pareizi apstrādā nosaukumvietas deklarācijas (xmlns), prefiksu elementus un noklusējuma nosaukumvietas. Nosaukumvietas tiek saglabātas formatētajā izvadē.
- Vai nosaukumvietas ir saglabātas?
- Jā. Atribūti xmlns un xmlns:prefix tiek saglabāti elementos, kur tie parādās avotā.
- Vai es varu samazināt XML vienā rindā?
- Daži XML formatētāji piedāvā samazināšanu. Šis rīks koncentrējas uz formatēšanu; samazinātu XML var izveidot, noņemot atstarpes starp elementiem, izmantojot regulāro izteiksmi vai īpašu rīku.
- Vai mans XML ir augšupielādēts serverī?
- Nē. DOMParser darbojas jūsu pārlūkprogrammā; formatētājs darbojas jūsu pārlūkprogrammā.
- Vai teksta mezglos mainīsies atstarpes?
- Nē. Teksta mezgla atstarpes tiek saglabātas, jo XML vietas saglabāšanas noteikumi atšķiras atkarībā no shēmas. Formatētājs maina tikai starpelementu atstarpes.