【问题标题】:Get list of elements and their values from an untyped xml fragment in T-SQL从 T-SQL 中的无类型 xml 片段中获取元素列表及其值
【发布时间】:2010-04-27 17:40:44
【问题描述】:

类似问题: How can I get a list of element names from an XML value in SQL Server

如何获取元素列表的值。

例如:

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

Would return
Element   |  Value
A         |    a1
B         |    b1
C         |    c1

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

谢谢,

【问题讨论】:

  • 我怀疑 SO 已经剥离了你的 s
  • @Kevin,如果您包含更好的问题标签,例如数据库名称(我从您的链接问题中获取),您将获得更多关于您的问题的视图、答案和投票。

标签: sql-server xml tsql


【解决方案1】:
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)

输出:

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

(7 row(s) affected)

【讨论】:

  • 很抱歉我遇到了格式问题。我只想要元素名称,它的价值没有层次结构。
  • +1,为我工作。我不喜欢编辑其他人的答案,但您的答案是正确的(并且代码实际运行)。如果您在运行示例时添加这样的输出,您将向人们展示这不仅仅是您头脑中的代码,而是它实际运行。这可能会导致更多的赞成票。
猜你喜欢
  • 2022-01-14
  • 2015-03-19
  • 2014-09-17
  • 1970-01-01
  • 2019-08-28
  • 1970-01-01
  • 1970-01-01
  • 2020-03-21
  • 2018-11-30
相关资源
最近更新 更多