[英]Parse below XML in Sql Server
The XML looks like this: XML如下所示:
<saw:deliveryContent format="comma" disposition="attachment" xmlns:saw="uri">
<saw:headline>
<saw:caption>
<saw:text>Beer PMIX Data</saw:text>
</saw:caption>
</saw:headline>
<saw:attachmentMessage>
<saw:caption>
<saw:text>Beer PMIX data used in the PMIX Data - ROQ Stars file.</saw:text>
</saw:caption>
</saw:attachmentMessage>
<saw:reportRef path="Beer PMIX (Scheduled)"/>
</saw:deliveryContent>
My result table should contain 我的结果表应包含
text ->Beer PMIX data used in the PMIX Data - ROQ Stars file.
reportRef path ->"Beer PMIX (Scheduled)
Like: text|reportRef path
像: text|reportRef path
Is it possible to get this values directly from a query or stored procedure? 是否可以直接从查询或存储过程中获取此值?
Your xml is invalid because there is no prefix declaration - saw
. 您的xml无效,因为没有前缀声明- saw
。
Slightly modified xml can be parsed that way: 稍微修改的xml可以这样解析:
DECLARE @xml xml = '<saw:deliveryContent format="comma" disposition="attachment" xmlns:saw="uri">
<saw:headline>
<saw:caption>
<saw:text>Beer PMIX Data</saw:text>
</saw:caption>
</saw:headline>
<saw:attachmentMessage>
<saw:caption>
<saw:text>Beer PMIX data used in the PMIX Data - ROQ Stars file.</saw:text>
</saw:caption>
</saw:attachmentMessage>
<saw:reportRef path="/shared/BJs Analytics/Departments/Planning/Jon/Agent Reports/Beer PMIX (Scheduled)"/>
</saw:deliveryContent>';
WITH XMLNAMESPACES ('uri' as saw)
SELECT
@xml.value('(saw:deliveryContent/saw:headline/saw:caption/saw:text)[1]','nvarchar(max)'),
@xml.value('(saw:deliveryContent/saw:attachmentMessage/saw:caption/saw:text)[1]','nvarchar(max)'),
@xml.value('(saw:deliveryContent/saw:reportRef/@path)[1]','nvarchar(max)')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.