У меня проблема с преобразованием XML в JSONB с использованием psql. Я видел topi c, но это не покрывает проблему префиксов. Упомянутая там функция работает для xml без префиксов. Если я избавлюсь от каждого префикса, он будет работать хорошо.
Итак, у меня есть этот фрагмент кода в CTE:
with XML_DATA as (
values(
'<?xml version="1.0" encoding="utf-8"?>
<aixm-message-5.1:AIXMBasicMessage xsi:schemaLocation="http://www.aixm.aero/schema/5.1/message http://www.aixm.aero/schema/5.1/message/AIXM_BasicMessage.xsd" gml:id="gmlAranID1" xmlns:aixm-message-5.1="http://www.aixm.aero/schema/5.1/message" xmlns:aixm-5.1="http://www.aixm.aero/schema/5.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gml="http://www.opengis.net/gml/3.2">
<aixm-message-5.1:hasMember>
<aixm-5.1:VerticalStructure gml:id="urn.uuid.1eafbe0e-f7ea-4cae-ad63-0cad113e236e">
<gml:identifier codeSpace="">1eafbe0e-f7ea-4cae-ad63-0cad113e236e</gml:identifier>
<aixm-5.1:timeSlice>
<aixm-5.1:VerticalStructureTimeSlice gml:id="gmlAranID133">
<gml:validTime>
<gml:TimePeriod gml:id="gmlAranID134">
<gml:beginPosition>2017-01-05T00:00:00Z</gml:beginPosition>
<gml:endPosition/>
</gml:TimePeriod>
</gml:validTime>
<aixm-5.1:interpretation>BASELINE</aixm-5.1:interpretation>
<aixm-5.1:sequenceNumber>5</aixm-5.1:sequenceNumber>
<aixm-5.1:correctionNumber>0</aixm-5.1:correctionNumber>
<aixm-5.1:timeSliceMetadata/>
<aixm-5.1:featureLifetime>
<gml:TimePeriod gml:id="gmlAranID135">
<gml:beginPosition>2017-01-05T00:00:00Z</gml:beginPosition>
<gml:endPosition/>
</gml:TimePeriod>
</aixm-5.1:featureLifetime>
<aixm-5.1:name>VENTSPILS (09)</aixm-5.1:name>
<aixm-5.1:type>WINDMILL</aixm-5.1:type>
<aixm-5.1:lighted>YES</aixm-5.1:lighted>
<aixm-5.1:markingICAOStandard>YES</aixm-5.1:markingICAOStandard>
<aixm-5.1:group>NO</aixm-5.1:group>
<aixm-5.1:length nilReason="unknown" xsi:nil="true"/>
<aixm-5.1:width nilReason="unknown" xsi:nil="true"/>
<aixm-5.1:radius nilReason="unknown" xsi:nil="true"/>
<aixm-5.1:lightingICAOStandard nilReason="unknown" xsi:nil="true"/>
<aixm-5.1:synchronisedLighting nilReason="unknown" xsi:nil="true"/>
<aixm-5.1:marker nilReason="unknown" xsi:nil="true"/>
<aixm-5.1:part>
<aixm-5.1:VerticalStructurePart gml:id="gmlAranID136">
<aixm-5.1:annotation>
<aixm-5.1:Note gml:id="gmlAranID137">
<aixm-5.1:propertyName>metadata</aixm-5.1:propertyName>
<aixm-5.1:purpose>DESCRIPTION</aixm-5.1:purpose>
<aixm-5.1:translatedNote>
<aixm-5.1:LinguisticNote gml:id="gmlAranID138">
<aixm-5.1:note lang="eng">Data originator identifier – LGIA 02; Data source identifier – LGIA; Horizontal confidence level - 90%; Horizontal resolution - 5 decimal places; Horizontal reference system - WGS84; Vertical confedence level - 90%; Vertical resolution – 1 m; Integrity – routine.</aixm-5.1:note>
</aixm-5.1:LinguisticNote>
</aixm-5.1:translatedNote>
</aixm-5.1:Note>
</aixm-5.1:annotation>
<aixm-5.1:verticalExtent uom="M">140</aixm-5.1:verticalExtent>
<aixm-5.1:horizontalProjection_location>
<aixm-5.1:ElevatedPoint gml:id="gmlAranID139" srsName="urn:ogc:def:crs:OGC:1.3:CRS84">
<gml:pos>21.7135 57.37485</gml:pos>
<aixm-5.1:horizontalAccuracy uom="M">0.044</aixm-5.1:horizontalAccuracy>
<aixm-5.1:elevation uom="M">150</aixm-5.1:elevation>
<aixm-5.1:verticalDatum>EGM_96</aixm-5.1:verticalDatum>
<aixm-5.1:verticalAccuracy uom="M">0.067</aixm-5.1:verticalAccuracy>
</aixm-5.1:ElevatedPoint>
</aixm-5.1:horizontalProjection_location>
</aixm-5.1:VerticalStructurePart>
</aixm-5.1:part>
<aixm-5.1:hostedPassengerService nilReason="unknown" xsi:nil="true"/>
<aixm-5.1:supportedGroundLight nilReason="unknown" xsi:nil="true"/>
<aixm-5.1:hostedNavaidEquipment nilReason="unknown" xsi:nil="true"/>
<aixm-5.1:hostedSpecialNavStation nilReason="unknown" xsi:nil="true"/>
<aixm-5.1:hostedUnit nilReason="unknown" xsi:nil="true"/>
<aixm-5.1:hostedOrganisation nilReason="unknown" xsi:nil="true"/>
<aixm-5.1:supportedService nilReason="unknown" xsi:nil="true"/>
<aixm-5.1:annotation nilReason="unknown" xsi:nil="true"/>
<aixm-5.1:lightingAvailability nilReason="unknown" xsi:nil="true"/>
</aixm-5.1:VerticalStructureTimeSlice>
</aixm-5.1:timeSlice>
</aixm-5.1:VerticalStructure>
</aixm-message-5.1:hasMember>
</aixm-message-5.1:AIXMBasicMessage>'::xml)
)
Но я не могу получить все глубоко вложенные атрибуты и префиксы.
Спасибо за все идеи.