sql - 为 sp_xml_preparedocument 配置 namespace

标签 sql sql-server xml xml-namespaces

我有一个格式如下的 RSS xml:

<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
  <channel>
    <title></title>
    <link></link>
    <description></description>
    <language></language>
    <lastBuildDate></lastBuildDate>
    <generator></generator>
    <docs></docs>
    <managingEditor></managingEditor>
    <webMaster></webMaster>
    <ttl></ttl>
    <item>
      <title></title>
      <link></link>
      <description></description>
      <guid isPermaLink="false"></guid>
      <pubDate></pubDate>
      <author></author>

      <dc:date></dc:date>
      <dc:publisher></dc:publisher>
      <dc:language></dc:language>

    </item>
    <item>
      <title></title>
      <link></link>
      <description></description>
      <guid isPermaLink="false"></guid>
      <pubDate></pubDate>
      <author></author>

      <dc:date></dc:date>
      <dc:publisher></dc:publisher>
      <dc:language></dc:language>

    </item>
   </channel>
</rss>

我想在 SQLServer 中用 sp_xml_preparedocument 解析它。 我的问题是“namespce”字段。每个有命名空间的项目中有三个标签,我不知道如何指定它们。 我试过这个:

EXEC sp_xml_preparedocument @hDoc OUTPUT, @xmlContent,'<item xmlns:dc="http://purl.org/dc/elements/1.1/"/>'

但它只解析了第一项而忘记了其余的! 有什么想法吗?

最佳答案

您只得到一行的事实与命名空间无关。您在针对 @hDoc 的 openxml 查询中有一些错误。

可能有一些原因让您仍然使用 openxml,但在您显示不适合您的查询之前,我会建议您改用 XML 数据类型。

with xmlnamespaces('http://purl.org/dc/elements/1.1/' as dc)
select C.N.value('(title/text())[1]', 'nvarchar(100)') as channel_title,
       I.N.value('(title/text())[1]', 'nvarchar(100)') as item_title,
       I.N.value('(dc:publisher/text())[1]', 'nvarchar(100)') as publisher
from @XML.nodes('/rss/channel') as C(N)
  cross apply C.N.nodes('item') as I(N);

SQL Fiddle

关于sql - 为 sp_xml_preparedocument 配置 namespace ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17732027/

相关文章:

c# - 在 .NET 应用程序中传递 XML 的最佳方式是什么?

php - 如何使用 PHP 将一个大的 XML 文件拆分成多个小文件?

java - Liferay 及其数据库模型

sql - 我们如何在 T-SQL 中编写递归 SQL 查询?

mysql - MySQL 是否可以自动初始化日期字段?

sql - 永远循环的 T-SQL 中的 While 子句

java - 使用 Java 在 Beanshell 中编辑 XML 值?

sql - 复杂的表关系

java - 将值从 jtable 发送到 sql 时出现 SQL 异常

sql-server - 如何在 SQL Server 中不使用游标将表的一列转换为 csv 字符串