XML数据类型函数不存在?

时间:2015-02-24 23:32:25

标签: sql sql-server xml

所以我有一些sql抓取一个XML节点,其内容编码为html。然后我将其转换为varchar并“解码”它并将其转换回XML数据类型。我遇到的问题是当我调用节点函数时它会说"nodes" is not a valid function, property, or field.。奇怪的是,如果使用其他functions queryvalueexistmodify,则不会抱怨。关于为什么的任何想法?

Declare @XmlEl As XML
DECLARE @htmlString As varchar(max)
Select @XmlEl = CAST(replace(CAST(Body AS VARCHAR(MAX)), 'utf-16', 'utf-8') AS xml) FROM Templates where TemplateID = 3119
Set @XmlEl = @XmlEl.query('/PdfTemplate/PdfBody').query('string(/)')
Select CAST(@XmlEl As varchar(max))
Set @htmlString = Replace(CAST(@XmlEl As varchar(max)), '&lt;', '<')
Set @XmlEl = CAST(Replace(@htmlString, '&gt;', '>') AS XML)
Select @XmlEl.nodes('p/span')

1 个答案:

答案 0 :(得分:1)

我认为你不能像这样对@ XmlEl.nodes做一个SELECT。我相信你需要更像

的东西
Select x.a.query('.') FROM @XmlEl.nodes('p/span') x(a)

引自MSDN nodes()