0

我有一个 XML,我想动态获取 Xml 节点值。我想传递节点名称,并返回函数或 SP 应该返回该节点的值。

<ClassificationTypeEntity>

        <LTABLE_ID>3170</LTABLE_ID>

        <LTABLE_CODE>script Code</LTABLE_CODE>

        <LTABLE_DESC>alert(''hello'')</LTABLE_DESC>

        <ACTIVE_YES_NO>1</ACTIVE_YES_NO>enter code here

        <PRIVATE_FILING>0</PRIVATE_FILING>

        <RETENTION_CODE /><RETENTION_TITLE />

        <LTABLE_ID_P>0</LTABLE_ID_P>

</ClassificationTypeEntity>;

例如,在上面的 xml 中,当我想要 LTABLE_CODE 节点的值时,我将传递相同的值,我应该得到的结果是

脚本代码

与 LTABLE_DESC 相同,结果应该是 alert(''hello'')

但是,我可以为两者编写 2 Xpath 查询,但如果我的架构发生更改(添加或删除更多属性),那么我也必须更改我的 SP。

谢谢,莫希特耆那教

4

1 回答 1

1

感谢您的回复。

我找到了解决方案:

declare @xmlData xml, @NodeName VarChar(500), @nodeValue VarChar(500)

Set @NodeName = 'LTABLE_CODE';

--Set @NodeName = 'LTABLE_DESC';

set @xmlData = 

 '<ClassificationTypeEntity xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

   <LTABLE_ID>3170</LTABLE_ID>

   <LTABLE_CODE>&lt;script&gt;al</LTABLE_CODE>

   <LTABLE_DESC>&lt;script&gt;alert(''hello'')&lt;/script&gt;</LTABLE_DESC>

   <ACTIVE_YES_NO>1</ACTIVE_YES_NO>

   <PRIVATE_FILING>0</PRIVATE_FILING>

   <RETENTION_CODE /><RETENTION_TITLE />

   <LTABLE_ID_P>0</LTABLE_ID_P>

</ClassificationTypeEntity>'

SET @nodeValue = @xmlData.value('(/ClassificationTypeEntity/*[local-name()=sql:variable("@NodeName")])[1]','nvarchar(max)')

SELECT @nodeValue
于 2013-01-18T14:18:56.360 回答