簡體   English   中英

在SQL Server 2005中,如何在保留文檔順序的同時將XML節點存儲在表中?

[英]In SQL Server 2005, how can I store XML nodes in a table while preserving document order?

我有一個xml文件,其中節點的順序很重要,就像這樣一個:

<Queue>
  <User name="Bob"/>
  <User name="Jane"/>
  <User name="Douglas"/>
  <User name="Samantha"/>
</Queue>

我正在使用OPENXML將這些節點存儲在表變量中。 當我插入表變量時,如何確保保留節點順序?

注意,我使用的是OPENXML而不是xquery,所以這不是重復的: 在SQL Server中的XML文檔中查找節點順序

我目前正在執行以下操作,依靠'mp:id'提供排序。

DECLARE @xmltext NVARCHAR(MAX)
SET @xmltext = 
N'
<Queue>
  <User name="Bob"/>
  <User name="Jane"/>
  <User name="Douglas"/>
  <User name="Samantha"/>
</Queue>';

DECLARE @xmlObjectHandler INT;
    -- Set up XML and the appropriate namespace(s) we'll be using
EXEC sp_xml_preparedocument @xmlObjectHandler OUTPUT, @xmltext;

DECLARE @TUserQueue TABLE (
    Ordinal INT IDENTITY(1,1),
    UserName NVARCHAR(200)
)

INSERT INTO @TUserQueue
SELECT 
    UserName
FROM
    OPENXML(@xmlObjectHandler, '/Queue/User')   
    WITH (
        NodeId INT '@mp:id',
        UserName NVARCHAR(200) '@name'
    ) AS users
ORDER BY users.NodeId;

SELECT * FROM @TUserQueue

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM