0

次のように、ノードの順序が重要な xml ファイルがあります。

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

これらのノードをテーブル変数に格納するために OPENXML を使用しています。テーブル変数に挿入するときにノードの順序が保持されるようにするにはどうすればよいですか?

注、私は xquery ではなく OPENXML を使用しているため、これは次の複製ではありません: Finding node order in XML document in SQL server

4

1 に答える 1

1

私は現在、「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
于 2013-01-10T17:33:24.397 に答える