所以我有一些sql抓取一个XML节点,其内容编码为html。然后我将其转换为varchar并“解码”它并将其转换回XML数据类型。我遇到的问题是当我调用节点函数时它会说"nodes" is not a valid function, property, or field.
。奇怪的是,如果使用其他functions query
,value
,exist
和modify
,则不会抱怨。关于为什么的任何想法?
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)), '<', '<')
Set @XmlEl = CAST(Replace(@htmlString, '>', '>') AS XML)
Select @XmlEl.nodes('p/span')
答案 0 :(得分:1)
我认为你不能像这样对@ XmlEl.nodes做一个SELECT。我相信你需要更像
的东西Select x.a.query('.') FROM @XmlEl.nodes('p/span') x(a)