在xml sqlserver中解析html标签
问题描述:
我有这个XML数据。在xml sqlserver中解析html标签
set @PROGRAM_XML ='<PROGRAM>
<ORG_GUID>FA9DC609-B8C0-4943-84E0-9D7BC0BC1027</ORG_GUID>
<LONG_DESCRIPTION><p>
<u><em>hi</em></u></p></LONG_DESCRIPTION>
<SHORT_DESCRIPTION><p>
<strong>hi</strong></p></SHORT_DESCRIPTION>
</PROGRAM>'
选择我得到的数据是,当我使用
EXEC SP_XML_PREPAREDOCUMENT @XMLHANDLER OUTPUT, @PROGRAM_XML
SELECT
ORG_GUID
,LONG_DESCRIPTION
,SHORT_DESCRIPTION
FROM
OPENXML(@XMLHANDLER,'/PROGRAM',2)
WITH
(
ORG_GUID UNIQUEIDENTIFIER
,LONG_DESCRIPTION VARCHAR(2000)
,SHORT_DESCRIPTION VARCHAR(2000)
)
。
ORG_GUID LONG_DESCRIPTION SHORT_DESCRIPTION
FA9DC609-B8C0-4943-84E0-9D7BC0BC1027 hi hi
但我想它作为
<ORG_GUID> LONG_DESCRIPTION SHORT_DESCRIPTION
FA9DC609-B8C0-4943-84E0-9D7BC0BC1027 <p><u><em>hi</em></u></p> <p><strong>hi</strong></p>
为什么它忽视了内在的HTML标签。任何人都可以给我一个答案。
感谢
答
如果您的SQL Server版本是2005及更高版本,可以使用这样的代码:
SELECT
b.value('ORG_GUID[1]','UNIQUEIDENTIFIER') AS ORG_GUID,
CAST(b.query('LONG_DESCRIPTION/*') AS NVARCHAR(2000)) AS LONG_DESCRIPTION,
CAST(b.query('SHORT_DESCRIPTION/*') AS NVARCHAR(2000)) AS SHORT_DESCRIPTION
FROM @PROGRAM_XML.nodes('//PROGRAM') a(b)