所以我有了这段sql,它可以获取内容编码为html的XML节点。然后,我将其转换为varchar,并对其进行"解码",然后将其转换回XML数据类型。我遇到的问题是,当我调用nodes函数时,它会说"nodes" is not a valid function, property, or field.
。奇怪的是,如果使用其他函数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')
我不认为你可以像那样从@XmlEl.nodes中进行SELECT。我相信你需要更像的东西
Select x.a.query('.') FROM @XmlEl.nodes('p/span') x(a)
从MSDN nodes()引用