2011-01-24 3 views
2

Для проекта, над которым я работаю, мне нужно преобразовать XML-документ в JSON, но сохраните его для чтения человеком, сохраняя данные в соответствии с данными. Пока xml2json-xslt способен создавать JSON, он не красиво отформатирован.
Моя основная проблема заключается в том, что это нужно делать в XSLT 1.0 без использования каких-либо внешних библиотек, javascript или что-то еще. Просто чистый XSLT. И хотя в Интернете много примеров, я просто не могу найти тот, который обеспечивает правильный (хорошо, читаемый) формат.
Не нужно делать ракету-науку путем преобразования булевых чисел, чисел, дат и т. Д. Просто нужно создать JSON, который будет использоваться другим приложением, но когда операторы будут смотреть на данные, им нужно отступать и красиво выровненные кронштейны.Преобразование XML в форматированный JSON

+1

Alex: Вы написали * «Это не нужно делать ракетно- наука "*, да, но JSON не отображает XML. Вот почему для этого перевода существует несколько соглашений. Я думаю, вы должны выбрать один из них. Кроме того, нет четкого представления о том, что вы подразумеваете под «хорошим форматом» и как это значимая проблема. –

+0

«Хороший формат» означает, что люди могут его прочитать, потому что все правильно выровнено. Узлы XML могут быть глубокими, что приводит к тому, что объекты JSON также углубляются. Простой, правильный отступ должен быть уже достаточно. –

ответ

1

Я думаю, что вы будете иметь, чтобы стиснуть зубы и подправить xml2json-XSLT, пока не сдвигает, как вы хочу этого.

См. Converting XML to plain text - how should I ignore/handle whitespace in the XSLT?, как обращаться с пробелами.

Я не думаю, что это будет приятный процесс :(

+0

Это тоже мой вывод, в конце концов. Проблема в том, что это низкоприоритетная задача, поэтому я искал лучшее решение. –

2

Простейшим решением может быть выталкивание вывода xml2json.xslt через форматировщик JSON, из которого, как представляется, доступно число - у меня нет опыта ни одного из них.

+0

Если такой форматирующий JSON будет существовать как XSLT, или если бы я мог его назвать из XSLT, тогда проблема была решена. Но таких форматов еще не существует. –

0

http://james.newtonking.com/pages/json-net.aspx

Я только использовал эту библиотеку для LINQ к JSON, и это было супер чистый и легкий. Я немного читал в документации о преобразовании JSON в .NET-объекты на лету, и я помню, как там был класс для JSON для XML ... проверьте его

+0

by super clean/easy Я имею в виду получение значения ключа из строки JSON с использованием LINQ to JSON с одной строкой кода –

+0

Не то, что я ищу. Мне нужно чистое решение XSLT, так как все, что я могу настроить, это XSLT-файл. Я определенно не могу использовать .NET-код. –

1

По моему опыту, XSLT особенно вреден для генерации хорошо отформатированный вывод.

Можете ли вы решить проблему на JSON-просмотрщике, который используют ваши операторы? Много моего взаимодействия JSON начинается с http://jsonformatter.curiousconcept.com/ ...

Другие варианты: Standalone application, Firefox AddOn, etc

+0

Нет, проблема в том, что у меня есть существующее приложение, которое использует XSLT-файл для преобразования данных. Теперь они хотят, чтобы данные были преобразованы в JSON вместо XML, но я не могу настроить код приложения. Просто XSLT. –

1

Только в случае, если кто-то получил такое же специальное требование (продуцирующие отступом JSON из «простых» XML с помощью XSLT 1.0), я создал отступов в версии из xml2json-xslt как суть: https://gist.github.com/3977454

Для всех, кто хорошо с XSLT 2.0 или кто «сложным» XML, я бы рекомендовал другой XSLT, потому что xml2json-XSLT имеет некоторые недостатки: в нем отсутствует надлежащий атрибут обработка, обработки из нескольких элементов с тем же именем и т. д. (текущая версия xml2json-xslt на момент написания: 31).

Альтернативы XSLT можно найти на github при поиске «xml2json xslt» (например, https://github.com/bramstein/xsltjson). Недостатком является то, что большинство из них не поддерживают отступ, но это может быть компенсировано путем подачи выходного сигнала через форматировщик JSON (см., Например, https://stackoverflow.com/a/5244011/490560)

Смежные вопросы