0

如何编写一个 xpath 查询以返回一个包含字符串数组的对象?似乎无法使值或字符串起作用。

<Info>
  <EmailAddresses>
    <string>email1</string>
    <string>email2</string>
    <string>email3</string>
  </EmailAddresses>
</Info>

SELECT Table.[Object].value('(//Info/EmailAddresses)[1]','nvarchar(max)') As 'EmailAddresses' from Table where ... 

导致无法隐式原子化或将'fn:data()'应用于复杂的内容元素,在推断类型'element(

SELECT Table.[Object].query('(/Info/EmailAddresses)[1]') As 'EmailAddresses' from Table where ... 

将返回整个

  <EmailAddresses>
    <string>email1</string>
    <string>email2</string>
    <string>email3</string>
  </EmailAddresses>

这使得在代码中解析变得很奇怪,因为它必须被转移到对象而不是 C# 中的字符串列表

4

1 回答 1

0

此示例查询从您的 xml 返回电子邮件列表

declare @x xml
set @x = 
'<Info>
  <EmailAddresses>
    <string>email1</string>
    <string>email2</string>
    <string>email3</string>
  </EmailAddresses>
</Info>'

SELECT r.nref.value('.','nvarchar(max)') As 'EmailAddresses' 
from @x.nodes('/Info/EmailAddresses/*') r(nref)

然后您可以在 C# 中以任何您想要的方式解析此结果集中的字符串 - 将它们放入字符串数组或其他东西中......

于 2013-08-08T02:37:03.623 回答