sql-server - 如何使用 TSQL 将属性添加到现有的根 XML 节点?

标签 sql-server xml tsql

我已经在 TSQL 中构建了一些 XML。

declare @requestXML xml

set @requestXML = (
select @dataXML
for xml raw ('rtEvent') 

我现在的一般输出遵循类似这样的模式:

<rtEvent>
  <ctx>
    .....
  </ctx>
</rtEvent>

我现在想做的是向 rtEvent 根添加一些属性和值 元素节点,但我不确定如何实现它。

我查看了 XML 对象的修改方法并观察了插入、替换值和删除操作,但似乎无法弄清楚如何使用它们中的任何一个来实现我想要的结果。

基本上,我希望能够修改根节点以反射(reflect)如下内容:

<rtEvent type="customType" email="someaddress@domain.com"
  origin="eCommerce" wishedChannel="0" externalId="5515">
   <ctx>
     ...
   </ctx>
</rtEvent>

我应该使用文档化的 XML.Modify 还是有更好的方法?应该怎么做?

最佳答案

以防万一您想查看修改方法的方法:

DECLARE @requestXML XML = '<rtEvent><ctx>...</ctx></rtEvent>'
SET @requestXML.modify(
    'insert 
    (
        attribute type {"customeType"},
        attribute email {"someaddress@domain.com"},
        attribute origin {"eCommerce"},
        attribute wishedChannel {"0"},
        attribute externalId {"5515"}
    )
    into (/rtEvent)[1]')
SELECT @requestXML

它返回这个:

<rtEvent type="customeType" email="someaddress@domain.com" origin="eCommerce" wishedChannel="0" externalId="5515">
  <ctx>...</ctx>
</rtEvent>

关于sql-server - 如何使用 TSQL 将属性添加到现有的根 XML 节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39250492/

相关文章:

sql - 选择返回动态列

java - 如何通过 Spring XML 配置文件将 Spring bean Autowiring 到 FXML Controller 类中

java - 将广告单元和应用程序 ID(我的 Admob 帐户广告)替换为测试(广告和应用程序 ID)后,Google Admob 广告未显示

sql - LTRIM(RTRIM(column_name)) 和 RTRIM(LTRIM(column_name)) 之间的性能有区别吗

sql - T-SQL 如何获取 2 周支付期的日期范围

sql - MSSQL - 有没有一种方法可以在将条目添加到另一个表时自动将条目添加到一个表?

java - hibernate示例程序中的异常

sql-server - 在 SQL Server 2012 的存储过程中执行多条语句和 CTE?

sql - 我该如何改进这个无休止的查询?

c# - 如何获取 SOAP 请求消息的 xml 表示形式?