【发布时间】:2019-02-12 01:58:23
【问题描述】:
我正在尝试从嵌套的 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 的值放入表中。
最好的情况是获取等于 SSID 的 ReferenceTypeCodedOther 的参考描述,而不必输入硬编码的 st.value('(//*:ReferenceCoded[7][1]//*:ReferenceDescription)[1]', 'char(200)')
任何帮助将不胜感激。 谢谢
【问题讨论】:
标签: sql sql-server xml tsql sql-server-2008