sql - Parse below XML in Sql Server
问题描述
The XML looks like this:
<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
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
.
Slightly modified xml can be parsed that way:
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)')
推荐阅读
- flutter - Flutter 中的 http StreamedRequest 是什么以及如何正确使用它?
- react-native - 我想为 React-Native TextInput 的每个字符值使用不同的颜色和字体系列
- flutter - 为什么 textfromfield 不更新它的颤振值?
- ruby-on-rails - Rails 注册表单不会创建
- flutter - SingleChildScrollView - 从图像移动到图像
- reactjs - 如何在 reactjs 中动态地将标签组转换为文本框
- python - discord.py 将变量添加到命令
- java - 使用 Java MongoClient 更新 MongoDB 中嵌入文档中的项目
- javascript - TippyJS 工具提示的位置很奇怪,但在滚动页面或调整窗口大小后正确显示
- javascript - SCRIPT1010:编译时 IE11 中的预期标识符