Українська

Інструменти розробника · Конвертер Syntax

XML до JSON картографування: атрибути, текстові вузли та одностороння проблема

· Як працює

Опубліковано ToolAcre · Редакція журналу

Логін свінгери Інформатика

Один XML пункт картування об'єкта в той час як повторні елементи карти в масив
Головна ToolAcre векторна ілюстрація

Не існує єдиного правого способу повороту XML Увійти JSON, бо XML має атрибути, змішаний вміст і замовлені діти, JSON недоліки. Цей пост пояснює загальні конвенції картування та пастки в кожному.

До чого <item> ставали об'єкт і два стали масивом — XML корми JSON зміни форми в залежності від того, скільки записів він має

Подача з `<item>one</item>` виробництво `"item": "one"`; додаючи другу зміну дробів, які властивість володіти `"item": ["one", "two"]`. Парсер не може заважати, що один елемент був концептуально переліком одного, оскільки обидва значення мають ідентичні XML синтаксис. Код, побудований проти тільки першого зразка, тому не може бути при наданні продукції, надсилання другого.

ToolAcre не приховує цю нестійкість за завжди армією варіант. Записує ім'я одного значення і повторне роз'єднання як масив. Щоб безпосереднього картування легко перевірити, але споживачі потребують стабільної форми збору, необхідно використовувати знання схеми або нормалізувати результат після перетворення.

Що XML має, що JSON не — атрибути, текст змішаних з елементами, замовленими дробами, просторами імен, коментарями та інструкцій з обробки

XML відокремлює атрибути з дочірніх елементів, зберігає порядок дроблення, дозволяє текст між елементами, здійснює затвердження простору імен, а також може містити коментарі та інструкції з обробки. JSON пропонує об'єкти та масиви, але не має вбудованих еквівалентів для цих категорій вузлів. Будь-ласка XML-доJSON результат – це невизнаний проект, не універсальний переклад.

Цей зчитувач покривається декларацією, коментарями та інструкціями з обробки. Ім'я пробілів, які знаходяться в дієсловаті, а не вирішуються: `<ns:item>` стає ключем `ns:item`, в той час як `xmlns:ns` бут `@xmlns:ns`. Змішаний текст долучився до одного ключа, тому його оригінальне положення про втрачені елементи дитини і попередження говорить про перетворення не може закруглити.

Атрибутові конвенції — префікси, такі як @ або $, чому вони існують, і як атрибут і дочірній елемент з тим самим іменним колоїдом

Атрибути використовують атрибути `@` префікс. `<user id="7"><id>other</id></user>` стає об'єктом `@id` до `"7"` і дитина `id` до `"other"`Префікс запобігає двом різним XML бУДЬТЕ З ЧАСТИНОЮ В ОБ’ЄДНОМУ ОБ’ЄДНОМУ ОБ’ЄДНОМУ ОБ’ЄДНОМУ ОБ’ЄДНАННЯХ. Також стає частиною договору конвертера, коли JSON писемно XML.

Інші бібліотеки можуть використовуватися `$`, об'єкт атрибутів або інший конвенцію. ToolAcre підтримує тільки видимі `@` мапінг. Зміна коду заявки без зміни письменника буде перетворюватися в елементи, тому зберегти його при використанні перетвореного значення як проміжної форми перевірки.

Текстові конвенції вершини — #текст або для вмісту елемента, і що відбувається, коли елемент має як текст, так і дітей

Елементи, що містять лише текстові фрагменти до цього рядка. Якщо атрибути або діти присутні, текстові життя під час `#text`; CDATA тримають окремо під `#cdata`. Самокритий тег стає порожнім. Зарезервовані ключі віддають перевагу звичайним дитячим іменам від категорій, які JSON не визначає.

Змішаний вміст залишається без втрат. Вступ `<p>before<b>bold</b>after</p>`посада «дощ» і «після» щодо дитини не можна перебудовувати з `#text` місцезнаходження Інструмент виявляє, що структурний візерунок і попереджає. Використовуйте вузлове консервування XML API коли документ замовлення є частиною значення.

Проблема односторонньої роботи — повторні елементи стають масивами тільки при повторенні, і чому споживачі повинні кодувати

Повторні шблінгу перетворюються в масиви тільки після повторення. Один `<book>` є одним об'єктом; два книги є масивом об'єктів. Це іноді називається односторонньою проблемою, але це не дефект parser. Видавничий документ не містить оголошення про незалежні його виникнення.

Відомі шляхи з знанням схеми можуть нормалізувати відомі шляхи: обгортання `catalogue.book` коли він вже не є масивом. Не варто застосувати, що правило до кожного майна, оскільки звичайний скаляр не повинен стати переліком, що означає симетрію. Конвертер навмисно не вдається входити в таку інформацію домена.

Ведуться роботи: перетворення невеликого RSS-документ у стилі — атрибути, повторний елемент і простір імен, з отриманим JSON анотований

Конвертація `<feed xmlns:m="https://example.invalid/meta"><item id="1"><m:title>One</m:title></item><item id="2"><m:title><![CDATA[Two & More]]></m:title></item></feed>`. Корінь `feed`; `@xmlns:m` зберігає декларацію простору імені; `item` - масив; кожен `@id` текст `#cdata`.

Тип вставки вимкнено за замовчуванням, так що навіть `id="2"` залишатися рядок `"2"`. Збірник інференції дозволяє читати числовий і булевий текст як ті JavaScript види, але XML не заявляє, що намір. Опція є вгадкою, що регулюється користувачем, не свідченнями, що надходяться документом.

Що це не криється — перетворення schema-driven, що знає елемент завжди список, який вимагає XSD або ручне копіювання

Ні XSD завантажується, і не доступна інформація про список схем, що приводяться. Перетворювач не може знати, що елемент повторюється, коли тільки один з'являється, валідувати необхідні діти, вирішувати простір імен УРТ у типи додатків або створити типований клієнт. Успішний парс тільки добре сформований XML прийнято настроченим зчитувачем.

DOCTYPE попри те, що неспроможні випадки, коли вони не відмовляються від парсингу, включаючи нешкідливі. Що обмежує запити зовнішніх суб’єктів господарювання, локально-файлове читання та розширення суб’єктів господарювання. Видалення DOCTYPE може також видалити деклараційну інформацію, що залежить від того, що ви маєте право лише при самостійному розміщенні даних та зрозуміли наслідки.

Поруч: XML до JSON - це картографування, не переклад — і як панель перетворювачів Синтаксису дозволяє вам перевірити, що наклеювання у вашому браузері

Порада результату ToolAcreдокументоване картування: `@` для атрибутів, `#text` для змішаного елемента тексту, `#cdata` для CDATA, масиви після повторних дробів і прострочення простору імені в літрі. Ці правила роблять вихід передбачуваним без попереднього закінчення XML і JSON поділу однієї моделі даних.

Для перевірки, цей проект швидко і читабельний. Для міцної інтеграції, тестування одного і багатьох випадків атрибути імен з дітьми, порожні елементи, змішаний вміст і простору імен. Якщо елемент замовлення або схеми, точністю, парсе XML проти цього договору, а не залежно від загальної форми перетворення.

Збережіть сиру XML фіксація прилягання нормалізованої відліку. Що парі зберігає докази, якщо залежність зміни масиву обробки, білий простір, обрізка або декодування суб'єкта господарювання. Також надає рецензентам місце, щоб побачити відмінності JSON не можна переносити. Перетворений об'єкт не може довести, чи порожня рядок надійшов з самозакриття елемента, парі теги або іншої конвенції у джерело.