0

我有一个 xml 文档,其中包含一些我不知道名称的自定义字段。我想生成一个选择语句,它将以名称值样式列出内容。

到目前为止,我发现的所有示例都要求我知道节点的名称。IE

declare @idoc int
     declare @doc nvarchar(max); set 
     @doc = '<user>
  <additionalfields>
    <Account__Manager>Fred Dibner</Account__Manager>
    <First__Aider>St Johns Ambulance</First__Aider>
  </additionalfields>
</user>'
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc;
SELECT    * FROM       OPENXML (@idoc, 'user/additionalfields/',1) 

有可能做到这一点吗?

4

1 回答 1

0

好吧,经过相当多的实验,我找到了答案。(顺便说一下,双下划线替换是由于某些数据库字段名称的输出格式造成的。)

SELECT replace(name,'__',' ') as name, value 
            FROM OPENXML (@idoc, '/user/additionalfields/*',1) 
            WITH (          
                Name  nvarchar(4000) '@mp:localname',
                value  nvarchar(4000) './text()'
                  ) 

结果

于 2013-10-03T14:39:40.087 回答