Разбор объекта JSON в XML

Я пытаюсь найти лучший подход для пользовательского синтаксического анализа объекта JSON в XML-документ.

Учитывая следующий JSON (я использую JSON.org):

{"CfgAccessGroup":{"CfgGroup":{"capacityRuleDBID":{"value":0},"DBID":{"value":97},"siteDBID":{"value":0},"name":{"value":"EVERYONE"},"quotaTableDBID":{"value":0},"contractDBID":{"value":0},"state":{"value":1},"capacityTableDBID":{"value":0},"tenantDBID":{"value":1}},"xmlns":"http://schemas.genesyslab.com/Protocols/Configuration/ConfServer/2005/","type":{"value":6},"memberIDs":{"CfgID":[{"CSID":{"value":0},"DBID":{"value":5195},"type":{"value":3}},{"CSID":{"value":0},"DBID":{"value":12854},"type":{"value":3}},{"CSID":{"value":0},"DBID":{"value":12863},"type":{"value":3}},{"CSID":{"value":0},"DBID":{"value":5808},"type":{"value":3}}]}}}

Я попытался в основном преобразовать JSON в XML, выполнив:

DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
            Document doc = db.parse(new InputSource(new StringReader(XML.toString(object))));

Однако на выходе получается:

<CfgAccessGroup>
    <CfgGroup>
        <capacityRuleDBID>
            <value>
            0
            </value>
        </capacityRuleDBID>
        ...
    <CfgGroup>
</CfgAccessGroup>

Мне нужно, чтобы это было:

...
<capacityRuleDBID value=0 />
...

Честно говоря, не знаю, с чего начать.

может это поможет stackoverflow.com/questions/4056419/…

pL4Gu33 31.10.2018 00:49
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
118
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вам нужен точный контроль над элементами и атрибутами сгенерированного XML, можно использовать XSLT-преобразование.

Concur. Никакая стандартная библиотека преобразования JSON в XML не всегда предоставит вам именно тот XML, который вам нужен. Некоторые дают больше контроля, чем другие, но, в конце концов, если вы точно знаете, чего хотите, вам придется заняться кодированием; и наиболее практичный способ - получить результат библиотечного метода, а затем применить XSLT для его преобразования. (Следовательно, один из подходов - использовать метод XSLT 3 json-to-xml () в качестве первого шага, за которым следует настраиваемое преобразование).

Michael Kay 31.10.2018 09:49

Другие вопросы по теме