Я пытаюсь запросить информацию из вложенных тегов XML. Я провел много поисков в Интернете и перепробовал все, что нашел, но ничто не дает мне желаемого результата без указания точного числового элемента в нужном мне гнезде.
Код, который я пытаюсь запустить, таков:
DECLARE @XmlIN XML
SELECT @xmlin = '
<ShippingScheduleResponse xmlns="rrn:org.xcbl:schemas/xcbl/v4_0/materialsmanagement/v1_0/materialsmanagement.xsd">
<ShippingScheduleResponseHeader>
<ShippingScheduleHeader>
<ScheduleReferences>
<OtherScheduleReferences>
<ReferenceCoded xmlns="rrn:org.xcbl:schemas/xcbl/v4_0/core/core.xsd">
<ReferenceTypeCoded>Other</ReferenceTypeCoded>
<ReferenceTypeCodedOther>HomeOwnerOccupied</ReferenceTypeCodedOther>
<ReferenceDescription>N</ReferenceDescription>
</ReferenceCoded>
<ReferenceCoded xmlns="rrn:org.xcbl:schemas/xcbl/v4_0/core/core.xsd">
<ReferenceTypeCoded>Other</ReferenceTypeCoded>
<ReferenceTypeCodedOther>WorkOrderNumber</ReferenceTypeCodedOther>
<ReferenceDescription>7456634</ReferenceDescription>
</ReferenceCoded>
<ReferenceCoded xmlns="rrn:org.xcbl:schemas/xcbl/v4_0/core/core.xsd">
<ReferenceTypeCoded>Other</ReferenceTypeCoded>
<ReferenceTypeCodedOther>SSID</ReferenceTypeCodedOther>
<ReferenceDescription>293283</ReferenceDescription>
</ReferenceCoded>
</OtherScheduleReferences>
</ScheduleReferences>
</ShippingScheduleHeader>
</ShippingScheduleResponseHeader>
</ShippingScheduleResponse>
'
SELECT
RefLineValue = ref.value('@xmlns', 'varchar(300)'),
RefTypeOther = ref.value('(ReferenceTypeCodedOther)[1]', 'varchar(50)'),
RefDescription = ref.value('(ReferenceDescription)[1]', 'varchar(50)')
FROM
@XmlIN.nodes('/ShippingScheduleResponse/ShippingScheduleResponseHeader/ShippingScheduleHeader/ScheduleReferences') AS XTbl(schref)
CROSS APPLY
schref.nodes('OtherScheduleReferences/ReferenceCoded') AS XTbl2(ref)
Я пытаюсь получить значения для referenceTypeCodedOther
и ReferenceDescription
в таблице.
Наилучшим сценарием было бы получить Справочное описание для ReferenceTypeCodedOther
, равного SSID, без необходимости вводить в жестком коде st.value('(//*:ReferenceCoded[7][1]//*:ReferenceDescription)[1]', 'char(200)')
Любая помощь будет принята с благодарностью.
спасибо