המרת XML ל-JSON

פועל על המכשיר שלכם · הקובץ לא עוזב את המכשיר.

גררו קובץ ‎.xml או הדביקו XML מ-API, מפיד או מקובץ הגדרות וקבלו JSON שאפשר לעבוד איתו. המסמך נקרא במפענח ה-XML של הדפדפן עצמו, בקידוד שהשורה הראשונה שלו מצהירה עליו, ולכן כל מה שתקין (well-formed) מומר, וקובץ פגום מדווח עם השורה והעמודה של הבעיה ועם מה שלא תקין שם.

המיפוי קבוע והפיך: כל אלמנט הופך למפתח; אחים עם אותו שם הופכים למערך; מאפיינים נשמרים במפתחות שמתחילים ב-@ (id="A3" הופך ל-"@id": "A3"); וכשאלמנט מכיל גם טקסט וגם בנים או מאפיינים, הטקסט נכנס תחת "#text". אלמנט עם טקסט בלבד הופך לערך עצמו.

כשזיהוי הסוגים פועל, טקסט כמו 12, true או אלמנט ריק הופך למספר, לערך בוליאני או ל-null; כבו אותו כדי לשמור הכול כטקסט. שמות עם מרחב שמות (soap:Body) נשמרים כפי שנכתבו. התצוגה המקדימה מציגה את 200 השורות הראשונות לפני ההורדה.

איך המרת XML ל-JSON

  1. גררו קובץ XML, או הדביקו XML בתיבה.
  2. החליטו אם מספרים, ערכים בוליאניים ואלמנטים ריקים יזוהו כסוגים.
  3. לחצו «המרה ל-JSON» ובדקו את התצוגה המקדימה.
  4. הורידו את ה-.json.

פורמטים נתמכים ומגבלות

קלט
XML (.xml) – קובץ או טקסט מודבק, בקידוד שהוא מצהיר עליו
פלט
JSON, מעוצב, UTF-8
מאפיינים
נשמרים כמפתחות "@name"
אלמנטים חוזרים
הופכים למערך
איפה זה רץ
בדפדפן – בלי העלאה

לא מיועד ל: מסמכים שאינם XML תקין (תגיות לא סגורות, דפי HTML) – המפענח מדווח על הבעיה הראשונה במקום לנחש.

אילו ערכים משנים סוג

זיהוי הסוגים חל על מאפיינים כמו על טקסט, ומשנה ערך רק כשלא הולך לאיבוד כלום. כשהוא פועל, id="3" הופך ל-"@id": 3, בעוד id="007" נשאר הטקסט "007". גם 1.50 נשאר טקסט, כי כמספר הוא היה נכתב בחזרה כ-1.5. ‏TRUE הופך ל-true. אלמנט ריק כמו <note/>, ואלמנט שמכיל רק רווחים, הופכים ל-null; המילה NULL נשארת טקסט. תאריכים כמו 2024-01-05 לעולם לא מומרים.

כשהזיהוי כבוי, אלמנטים ריקים הופכים ל-"" וכל ערך נשאר טקסט בדיוק כפי שנכתב.

מה ה-JSON לא יכול לשמור

לחלקים מסוימים של מסמך XML אין מקום ב-JSON, והם נשמטים: הערות, הוראות עיבוד וה-DOCTYPE. קטעי CDATA הופכים לטקסט רגיל, כך ש-<a><![CDATA[<b>x</b>]]></a> נותן "a": "<b>x</b>".

הסדר בין אלמנטים בשמות שונים הולך לאיבוד, כי כל שם הופך למפתח אחד. ב-<step>1</step><note/><step>2</step>, שני ה-step נאספים ל-"step": [1, 2], ושום דבר לא רושם שה-note ישב ביניהם. טקסט שמעורב בתגיות מאבד את מקומו באותה צורה: <p>Hello <b>world</b> and <i>you</i>!</p> הופך ל-"b": "world", ‏"i": "you" ו-"#text": "Hello and !". למסמכים שבהם הסדר הזה הוא התוכן עצמו, כמו טקסט מעוצב, המיפוי הזה לא מתאים.

מרחבי שמות, ישויות, שגיאות וקידודים

שמות עם קידומת נשמרים כפי שנכתבו, והצהרות מרחבי שמות מופיעות כמאפיינים: <soap:Envelope xmlns:soap="…"> נותן מפתח "soap:Envelope" שמכיל "@xmlns:soap", ו-/json-to-xml הופך את שניהם בחזרה לאותו XML.

מלבד ישויות שה-DOCTYPE של המסמך עצמו מגדיר, המפענח מבין רק את חמש הישויות שמוגדרות ב-XML עצמו (&amp; &lt; &gt; &quot; &apos;) וישויות מספריות כמו &#160;. כשהמפענח נעצר, ההודעה נותנת את השורה והעמודה ואומרת במילים פשוטות מה לא תקין: אלמנט שנסגר בשם אחר, שם לא מוכר כמו &nbsp; (כתבו במקומו &#160;), & או < שעומדים לבד, אלמנט שני ברמה העליונה, או קובץ שנגמר מוקדם מדי.

הקובץ נקרא בקידוד שהשורה הראשונה שלו מצהירה עליו, כמו ISO-8859-1 או windows-1255. בלי הצהרה, הוא נקרא כ-UTF-8 או כ-UTF-16, ודפי קוד ישנים מזוהים כמו שמתואר ב-/csv-to-json.

שאלות נפוצות

האם הקובץ שלי נשלח לשרת?
לא. ההמרה מתבצעת כולה בדפדפן, בכוח המכשיר שלכם, והקובץ לא יוצא מהמחשב או מהטלפון. אחרי שהשתמשתם בכלי פעם אחת, הוא ממשיך לעבוד גם בלי אינטרנט (כלי הווידאו, זיהוי הטקסט והסרת הרקע מורידים את המנוע שלהם מהאתר הזה בפעם הראשונה).
איך מטופלים מאפיינים ותוכן מעורב?
מאפיינים הופכים למפתחות עם תחילית @, כך ש-<item id="A3"> נותן "@id": "A3". אם לאלמנט יש טקסט וגם מאפיינים או אלמנטים בנים, הטקסט נשמר תחת "#text"; אלמנט עם טקסט בלבד הופך לטקסט הזה ישירות.
למה אלמנט אחד הוא אובייקט והחוזרים הם מערך?
אלמנט שמופיע פעם אחת תחת ההורה הופך לאובייקט (או לערך); שני אחים או יותר עם אותו שם הופכים למערך. זה משקף את המסמך במדויק, ולכן רשימה של פריט אחד היא אובייקט אחד – אם הקוד שלכם צריך מערך בשני המקרים, עטפו אותו בצד המקבל.
איך נראה ראש ה-JSON?
מפתח אחד על שם אלמנט השורש, שמכיל את כל מה שבתוכו – <records>…</records> הופך ל-{"records": {...}}. כך שם השורש נשמר וכלי המרת JSON ל-XML יכול לבנות מחדש את אותו מסמך.

כלים קשורים

עוד בגיליונות ונתונים

עמוד זה בשפות אחרות: English · العربية · Deutsch · Français · Español · Русский · Português · 中文 · हिन्दी · Türkçe · فارسی · اردو · Bahasa Indonesia · বাংলা