Hi Günter, have you considered using
    json:parse

instead? I find the W3C-defined format obtained from fn:json-to-xml unnatural and unpractical; whereas BaseX-defined json:parse produces a very elegant, intuitive and natural representation of the content - turning JSON documents into near-equivalents of XML documents. Consider this example: given the json shown at the end of this post, getting a simple report (list of flight destinations and times) using json:parse might looks like this:

unparsed-text('flights.json') ! json:parse(.)
// flight[departureAirport = 'CGN']
/concat(arrivalAirport, ' ', departureTime)

In comparison, using fn:json-to-xml, my query looks like this:

unparsed-text('flights.json') ! json-to-xml(.)
// *:map[@key eq 'flight'][*:string[@key = 'departureAirport'] = 'CGN']
/concat(*:string[@key = 'arrivalAirport'], ' ', *:string[@key = 'departureTime'])

Kind regards,
Hans-Jürgen

[
  {
    "flight" : {
    "departureAirport" : "CGN",
    "arrivalAirport" : "JFK",
    "departureTime" : "2017-08-26T20:00:00"
    }
  },
  {
    "flight" : {
      "departureAirport" : "CGN",
      "arrivalAirport" : "FRA",
      "departureTime" : "2017-08-26T21:00:00"
    }
  }
]



Günter Dunz-Wolff <guenter.dunzwolff@gmail.com> schrieb am 12:36 Samstag, 26.August 2017:


It works. I’ll go with the second solution. Martin, thanks a lot!

> Am 26.08.2017 um 12:26 schrieb Martin Honnen <martin.honnen@gmx.de>:
>
> On 26.08.2017 12:23, Günter Dunz-Wolff wrote:
>
>> I’m trying to get data out of json via xquery.
>> This is my scenario:
>> 1. Fetching data with fetch:text() calling a REST-API
>> 2. Transforming the data with json-to-xml, so I’ll get something like
>>     <array xmlns="http://www.w3.org/2005/xpath-functions“>
>>         <map>
>>             <string key=„word1“>gehen</string>
>>             ...
>>         </map>
>>         ...
>>     </array>
>> 3. In my xqm-file I have: let $json_xml := json-to-xml(my_fetched_json)
>> 4. I try to get „gehen“ with $json_xml//string[@key='word1‘], but it yields nothing, also $json_xml//string yields nothing. Only $json_xml//text() yields all string-values into a long string.
>> What am I doing wrong? Or is there another way, to work with JSON-Data to get values of a given key?
>
> The elements are in the namespace http://www.w3.org/2005/xpath-functions so either use
>  $json_xml//*:string[@key='word1']
> or make sure you declare a prefix (e.g. 'fn') for the namespace and use that prefix in e.g.
>  $json_xml//fn:string[@key='word1']
>