Ifformatta u indenta XML

jifformatta l-kodiċi XML b'mod strutturat u qari, essenzjali għall-qari tal-iskambji ta' dejta tiegħek

Għaliex format XML?

L-ifformattjar XML (imsejjaħ ukoll ifformattjar XML, indentazzjoni XML jew stampar pjuttost) jikkonsisti minn rorganizza mill-ġdid dokument XML kompatt jew imminifikat fi struttura indentata, li tinqara linja b'linja. XML ifformattjat tajjeb itejjeb il-qari mill-bniedem, li huwa essenzjali meta taqra rispons SAPUN, ibbrawżja RSS feed, jew jispezzjona l-kontenut ta 'fajl ta' konfigurazzjoni.

B'mod konkret, nifformattjaw l-XML tagħna għal erba' raġunijiet ewlenin:

  • Iddibaggja: sib malajr tikketta mhux magħluqa, attribut nieqes jew struttura inkonsistenti.
  • Integrazzjoni manwali: tikkopja b'mod nadif framment f'fajl ta' konfigurazzjoni mingħajr ma tkisser l-indentazzjoni eżistenti.
  • Reviżjoni tal-kodiċi: qabbel żewġ verżjonijiet ta' dokument XML f'diff Git isir jinqara meta kull tag tkun fuq il-linja tagħha stess.
  • Dokumentazzjoni u eżempji: XML ifformattjat huwa ħafna aktar edukattiv f'dokument tekniku jew README.

Każijiet ta' użu tipiċi

L-XML jibqa' omnipreżenti fl-ekosistema tas-softwer. Hawn huma l-formati li fuqhom l-iżviluppaturi ħafna drabi tuża formatter XML:

  • Tweġibiet SOAP: envelops mibgħuta lura mis-servizzi tal-web SOAP ġeneralment jaslu mnaqqsa.
  • Feeds RSS u Atom: biex tispezzjona jew tivverifika feed ta' sindikazzjoni.
  • Konfigurazzjonijiet tar-Rebbiegħa, Maven (pom.xml), Ant, Ivy: Fajls tal-bini u tad-dipendenza Java.
  • AndroidManifest.xml u riżorsi XML oħra ta' proġett Android.
  • Fajls SVG: Grafika vettorial esportata minn softwer tad-disinn spiss tiġi kkompressata fuq linja waħda.
  • Esportazzjonijiet ta' kummerċ elettroniku: Feeds ta' prodotti ta' Google Shopping, esportazzjonijiet ta' Magento, Shopify jew PrestaShop.
  • Dokumenti OOXML: Fajls .docx, .xlsx u .pptx huma arkivji ZIP li fihom fajls XML li ħafna drabi jeħtieġ li jiġu spezzjonati.
  • XML Sitemaps: il-sitemap.xml serva lill-magni tat-tiftix.

Kif jaħdem l-ifformattjar XML

Formatter XML mhux biss iżid l-ispazji bl-addoċċ. Huwa jwettaq żewġ passi:

  1. Parsing: id-dokument jinqara imbagħad jinbidel f'siġra DOM (Document Object Model). Dan il-pass jivvalida wkoll li l-XML huwa iffurmat tajjeb (tags imniżżlin sew, attributi fi kwotazzjonijiet, element għerq wieħed).
  2. Serializzazzjoni indentata: Is-siġra DOM terġa' tintbagħat bħala test b'qtugħ ta' linji bejn l-elementi u indentazzjoni proporzjonali għall-fond fis-siġra.

Dan l-approċċ tas-siġra jiżgura li l-istruttura loġika tad-dokument tibqa’ strettament identika: huma modifikati biss spazji insinifikanti bejn it-tikketti. sezzjonijiet CDATA, kummenti u l-istruzzjonijiet tal-ipproċessar huma ppreservati. Trasformazzjonijiet aktar avvanzati (XSLT) jew mistoqsijiet (XPath) joperaw fuq din l-istess siġra DOM.

Kif tuża l-XML Formatter

Il-proċedura hija deliberatament sempliċi:

  1. Waħħal id-dokument XML tiegħek fil-kaxxa tat-test, jew ittella fajl .xml.
  2. Ivvalida l-formola: id-dokument jiġi analizzat u indentjat awtomatikament.
  3. Ir-riżultat ifformattjat jidher fiż-żona tal-output. Fil-każ ta' żball ta' parsing, messaġġ jindika n-natura u l-pożizzjoni approssimattiva tal-problema.
  4. Ikkopja r-riżultat bil-buttuna ddedikata, jew niżżlu biex tintegrah direttament fil-proġett tiegħek.

L-Aħjar Prassi ta' Indentazzjoni XML

Xi konvenzjonijiet li għandhom isegwu biex jipproduċu XML nadif u durabbli:

  • Indentazzjoni: 2 jew 4 spazji skont il-konvenzjoni tat-tim tiegħek. Ibqa' konsistenti matul il-proġett kollu.
  • Linji waqfiet: element wieħed għal kull linja, li jagħmel Git diffs użabbli.
  • Taqsimiet CDATA: formatter tajjeb iżomm il-blokki fl-intier tagħhom mingħajr ma jerġa' jdaħħal il-kontenut tagħhom, li jiġi ttrattat bħala test sempliċi.
  • Kodifikazzjoni: dejjem iddikjara l-kodifikazzjoni fl-ewwel linja b'. UTF-8 huwa l-istandard de facto.
  • Attributi: Jekk element ikollu ħafna attributi, xi timijiet ikebbebhom biex jinqara; inkella jibqgħu fuq l-istess linja tat-tikketta tal-ftuħ.
  • Kummenti: irid jinżamm kif inhu mit-trejner.

Eżempju qabel / wara

Hawnhekk huwa eżempju konkret ta 'XML kompatt imżejjen mill-formatter.

Qabel (linja waħda, ma tinqarax):

valval2

Wara (ifformattjat b'2 spazji):



  val
  val2

L-istruttura loġika hija strettament identika: it-tqassim viżwali biss jinbidel.

Eżempju komplut

Dokument XML akbar wara l-ifformattjar jidher bħal dan:



  
    John Doe
    johndoe@example.com
    
      123 Main St
      Springfield
      HE
      62704
      USA
    
    
      555-1234
      555-5678
    
    
      veru
      dlam
    
    2024-06-14T09:30:00Z
  

Mistoqsijiet frekwenti

X'inhu XML iffurmat tajjeb?

XML jingħad li huwa ffurmat tajjeb meta jirrispetta r-regoli sintattiċi bażiċi: element ta' għerq wieħed, tags imdaħħla u magħluqa b'mod korrett, attributi fi kwotazzjonijiet, karattri speċjali maħruba (&, <, >). Dan huwa prerekwiżit biex tkun tista 'taqsam id-dokument. M'għandux jiġi konfuż ma' XML validu, li jirrispetta wkoll skema XSD jew DTD.

X'inhi d-differenza bejn l-ifformattjar (stampar pjuttost) u l-minifikazzjoni XML?

L-istampar sabiħ iżid qtugħ tal-linji u indentazzjoni għall-qari uman. Il-minifikazzjoni tagħmel l-oppost: tneħħi l-ispazji kollha mhux sinifikanti biex tnaqqas id-daqs tad-dokument, li huwa utli għat-transitu tan-netwerk (tweġibiet SOAP, XML API). Iż-żewġ dokumenti huma semantikament ekwivalenti.

Il-kummenti u s-sezzjonijiet CDATA huma ppreservati waqt l-ifformattjar?

Iva. Formatter korrett jippreserva kummenti , sezzjonijiet , u struzzjonijiet tal-ipproċessar (). Il-kontenut ta' CDATA jibqa' intatt mingħajr indentazzjoni mill-ġdid, peress li huwa ttrattat bħala test sempliċi. Iċċekkja r-riżultat jekk il-kummenti tiegħek humiex ta’ importanza dokumentarja.

Ispazji tal-isem XML (xmlns) huma appoġġjati?

Iva. Dikjarazzjonijiet tal-ispazju tal-isem (xmlns:soap="...") u prefissi assoċjati () huma ppreservati kif inhuma. Il-formatter ma jibdelx l-isem tal-prefissi jew iċċaqlaq dikjarazzjonijiet fis-siġra, u jiżgura li s-semantika tad-dokument tibqa’ l-istess. L-ispazji tal-isem default (mingħajr prefiss) jinżammu wkoll fil-livell tad-dikjarazzjoni tagħhom.

Għandna nagħmlu inċiż bi spazji jew tabs?

It-tnejn jaħdmu, iżda l-ispazji huma l-konvenzjoni dominanti għaliex juru b'mod identiku kullimkien (terminals, browsers, Git diff). 2 jew 4 spazji skond il-verosità ta' l-XML tiegħek: 2 għal dokumenti mdaħħla ħafna (SVG, konfigurazzjonijiet tar-Rebbiegħa), 4 għal dokumenti ċatti. Il-ħaġa prinċipali tibqa 'konsistenza matul il-proġett.

Il-formatter jibdel is-semantika tad-dokument?

Le. Ispazji bojod bejn it-tikketti biss huma aġġustati. L-istruttura DOM, il-valuri tal-attributi, u l-kontenut testwali tal-elementi jibqgħu l-istess. Eċċezzjoni waħda: kontenut testwali sinifikanti (b'xml:space="preserve") għandu jinżamm kif inhu, iċċekkja dan l-aspett jekk id-dejta tiegħek fiha spazji sinifikanti.

Nistgħu nivvalidaw XML fl-istess ħin li nifformattjawh?

Il-formatter diġà jwettaq validazzjoni sintattika (XML iffurmat tajjeb) peress li jrid janalizza d-dokument. Għall-validazzjoni kontra skema XSD jew DTD, għandek bżonn għodda dedikata: il-validazzjoni strutturali tmur lil hinn mill-ambitu ta 'formatter sempliċi. xmllint --schema jew xerces huma adattati għal dan il-pass addizzjonali.

Eżempju ta' talba

curl -X POST https://cdrn.fr/api/v1/tools/xml-formatter/execute \
  -H "Content-Type: application/json" \
  -d '{"input":"..."}'

Skema ta' input

Kamp Tip Meħtieġ Default
input text

Endpoints

  • GET https://cdrn.fr/api/v1/tools - telenka l-għodod kollha disponibbli
  • GET https://cdrn.fr/api/v1/tools/xml-formatter - tikseb l-iskema ta' din l-għodda
  • POST https://cdrn.fr/api/v1/tools/xml-formatter/execute - teżegwixxi din l-għodda b'payload JSON