从 T-SQL 中的无类型 xml 片段获取元素及其值的列表

Kev*_*vin 1 xml t-sql sql-server

类似于问题: 如何从 SQL Server 中的 XML 值获取元素名称列表

我还如何获取元素列表的值。

例如:

<Root>
<A>a1</A>
<B>b1</B>
<C>c1</C>
</Root>

Would return
Element   |  Value
A         |    a1
B         |    b1
C         |    c1
Run Code Online (Sandbox Code Playgroud)

抱歉,造成混乱,我不知道如何进行格式化。我只想要元素名称和值,不关心层次结构。

谢谢,

Dan*_*haw 5

declare @xml xml
set @xml = '<Root><A>a1</A><B>b1</B><C>c1</C><D><E>e1</E></D><F>f1<G>g1</G></F></Root>'

select
    element.value('fn:local-name(.)', 'varchar(max)') as Element,
    element.value('text()[1]', 'varchar(max)') as Value
from @xml.nodes('/*//*') as nodes(element)
Run Code Online (Sandbox Code Playgroud)

输出:

Element  Value
-------- ----------
A        a1
B        b1
C        c1
D        NULL
E        e1
F        f1
G        g1

(7 row(s) affected)
Run Code Online (Sandbox Code Playgroud)