Kigeuzi cha Bure

XML kwa Kigeuzi cha JSON

Badilisha data au faili za XML ziwe umbizo la JSON papo hapo kwenye kivinjari chako. Inaauni ujongezaji maalum na hushughulikia miundo iliyowekwa.

Chagua faili ya XML

au buruta na udondoshe hapa

Au

Kuhusu zana hii

XML na JSON zote ni miundo ya kubadilishana data lakini zinatoka kwa enzi tofauti za wavuti. XML, iliyosanifiwa mwaka wa 1998, iliundwa kama umbizo la alama linalojieleza lenye sifa, nafasi za majina na uthibitishaji wa taratibu. JSON iliibuka mapema miaka ya 2000 kama umbizo la uzani mwepesi linalofaa zaidi nyakati za JavaScript na API za kisasa. API nyingi mpya za wavuti huzungumza JSON; mifumo mingi ya zamani - huduma za SOAP, milisho ya RSS, faili za usanidi, ushirikiano wa biashara - bado huzalisha XML. Kubadilisha kati yao ni mojawapo ya kazi za kawaida za interop katika maendeleo ya kisasa.

Ugeuzaji sio hasara kabisa kwa sababu miundo miwili ina nguvu tofauti ya kujieleza. XML ina sifa (ambazo JSON haina asili yake), hutofautisha kati ya maandishi na majina ya vipengee, na hutumia maudhui mchanganyiko (vipengee vilivyo na maandishi na vipengele vya watoto). Muundo wa moja kwa moja wa kitu/safu ya JSON hauwezi kuwakilisha vipengele hivi moja kwa moja, kwa hivyo vigeuzi hutumia kanuni: sifa huwa funguo za @-prefixed, maudhui ya maandishi huwa ufunguo wa #maandishi, na kadhalika.

Kigeuzi hiki huchanganua XML kwa kutumia DOMParser iliyojengewa ndani ya kivinjari na hutembea mti wa DOM unaotokana na kutoa JSON. Vipengele vilivyo na jina la lebo sawa na ndugu hukusanywa katika safu; sifa huingia kwenye funguo maalum; nafasi za majina na maagizo ya usindikaji huhifadhiwa wakati zipo. Matokeo yake ni JSON inayoweza kusomeka na binadamu ambayo inarudi kwa XML kwa njia inayofaa.

Kwa nini Badilisha XML kuwa JSON?

Nambari nyingi za kisasa za programu zinafaa zaidi na JSON. JavaScript huchanganua JSON kiasili, moduli ya json ya Python iko kwenye maktaba ya kawaida, na karibu kila lugha nyingine ina usaidizi sawa wa darasa la kwanza wa JSON. Uchakataji wa XML unahitaji kuagiza maktaba za ziada na kuandika bodi zaidi. Kubadilisha XML inayoingia hadi JSON kabla ya kuchakata mara nyingi ndiyo njia ya haraka zaidi kutoka kwa mlisho wa nje wa XML hadi muundo wa data wa ndani.

Vifaa pia hutegemea JSON. Virembo vya JSON, vithibitishaji, vithibitishaji vya taratibu, lugha za hoja (jq, JSONPath), na watazamaji ni vingi; sawa na XML ni chache na mara nyingi ni za zamani. Kufanya kazi katika JSON hufungua mfumo tajiri wa ikolojia wa zana.

Jinsi ya kutumia

Bandika XML, pata JSON.

  1. Bandika au pakia XML yako: Bandika maandishi ya XML kwenye eneo la ingizo au dondosha faili. XML lazima iwe imeundwa vizuri; XML iliyoharibika hutoa hitilafu ya kuchanganua badala ya kubahatisha.
  2. Geuza: DOMParser huunda DOM, kigeuzi hutembea kila kipengele, na JSON inatolewa kwa kutumia vitufe vya sifa (@attr) na vitufe vya maandishi (#text) inapohitajika. Vipengele vilivyo na jina sawa vinakuwa safu.
  3. Kagua muundo: Kagua JSON ili uthibitishe sifa, maandishi, na uwekaji kiota zimechorwa inavyotarajiwa. Mikataba inayotumika (kwa mfano, @ kwa sifa) inaonekana kwenye matokeo.
  4. Pakua au nakili: Hifadhi kama .json au nakili kwenye ubao wa kunakili.

Kesi za Matumizi ya Kawaida

Maelezo ya Kiufundi

DOMParser hutoa DOM ya XML inayofanana na kile kivinjari hutumia kwa kurasa za XHTML. Kigeuzi hutembea DOM hii kwa kujirudia. Kwa kila kipengele huunda kipengee cha JSON: sifa huwa funguo zilizowekwa awali na @ (k.m., @id, @class); vipengele vya mtoto vya kipengele vinarudiwa katika muundo sawa; maudhui ya maandishi, yanapokuwepo pamoja na watoto, huishi chini ya kitufe cha #maandishi.

Vipengele vya watoto vinavyorudiwa kwa jina sawa la lebo hukusanywa katika safu ya JSON. Mtoto mmoja wa jina fulani anaonekana kama thamani ya kitu; watoto wengi huonekana kama safu ya vitu. Mkataba huu hufanya kazi vyema kimazoezi lakini inamaanisha umbo la JSON linategemea kama vipengele vinaonekana mara moja au mara nyingi - kutokamilika kwa ramani ya XML-to-JSON inayojulikana.

Nafasi za majina zimehifadhiwa kama sehemu ya majina ya vipengele (kiambishi awali:localName). Maagizo ya usindikaji na sehemu za CDATA hubadilishwa kuwa maudhui ya maandishi. Matangazo ya XML na DOCTYPE huondolewa kwenye pato la JSON lakini haziathiri data.

Mazoea Bora

Maswali yanayoulizwa mara kwa mara

Kubadilisha XML kuwa JSON kunabadilisha yaliyomo?
Maudhui yanahifadhiwa kwa usahihi iwezekanavyo. Hata hivyo, baadhi ya vipengele vya umbizo mahususi huenda visiwe na vilingana vya moja kwa moja, kwa hivyo tofauti ndogo za umbizo zinaweza kutokea.
Kwa nini ubadilishe data kuwa umbizo la JSON?
JSON ndio umbizo la kawaida la data kwa API za wavuti na programu za JavaScript. Inaweza kusomeka na binadamu, inaungwa mkono sana na lugha za programu, na ina sintaksia rahisi kuliko XML.
Je, kibadilishaji kinashughulikia muundo wa XML uliowekwa kiota au changamano?
Ndiyo. Zana huchanganua kwa usahihi vitu vilivyoorodheshwa, safu, na aina zote za data za XML, kuhifadhi muundo kamili wa data katika toleo la JSON.
Je, ubadilishaji huu ni salama na wa faragha?
Ndiyo. Uchakataji wote hufanyika kwenye kivinjari chako. Data yako haiachi kamwe kwenye kifaa chako - hakuna upakiaji wa seva, hakuna usindikaji wa wingu, hakuna mkusanyiko wa data.
Je, sehemu za CDATA zinashughulikiwa?
Ndiyo. Maudhui ya CDATA hubadilishwa kuwa maandishi wazi katika pato la JSON. Ufungaji wa CDATA yenyewe haujahifadhiwa, lakini yaliyomo ni.
Je, data yangu imepakiwa kwenye seva?
Hapana. DOMparser huendesha katika kivinjari chako; uongofu hutokea kabisa kwenye kifaa chako.
Je, safari ya kwenda na kurudi ya JSON itarudi kwa XML?
Ndio ikiwa unatumia mkusanyiko wa kinyume (zana ya JSON hadi XML inafuata sheria zile zile za @atr na #text). Safari ya kwenda na kurudi huhifadhi muundo kwa XML ya kawaida; baadhi ya visasisho (utaratibu wa maudhui mchanganyiko, maagizo ya uchakataji) huenda visiishi kikamilifu.
Ukubwa wa juu zaidi wa kuingiza ni upi?
Hadi 50 MB. DOMparser imefungwa kwa kumbukumbu na kivinjari chako; faili kubwa sana za XML zinaweza kupunguza kasi au kushindwa kuchanganua.