xml - 用 xml 中的多个位置替换一个子节点值
问题描述
需要将子节点 <var..> 的值 'OBLIGEE ATTORNEY' 和 'saravanan' 替换为值 'EDWIN CHAND'。提前致谢 这是查询:
SELECT XMLQUERY ( 'copy $new := $d1
modify (do replace value of $new/root//var[@name=$element_name] with $d)
return $new'
PASSING xmlparse(document '<root>
<first>
<var name="user_input_attn_obligee_desc">OBLIGEE ATTORNEY</var>
</first>
<second>
<var name="user_input_attn_obligee_desc">saravanan</var>
</second>
<user_input_attn_obligor_desc>OBLIGOR ATTORNEY</user_input_attn_obligor_desc>
</root>') AS "d1",
'EDWIN CHAND' AS "d",
'user_input_attn_obligee_desc'AS "element_name") FROM SYSIBM.SYSDUMMY1;
需要的输出:
'<root>
<first>
<var name="user_input_attn_obligee_desc">EDWIN CHAND</var>
</first>
<second>
<var name="user_input_attn_obligee_desc">EDWIN CHAND</var>
</second>
<user_input_attn_obligor_desc>OBLIGOR ATTORNEY</user_input_attn_obligor_desc>
</root>'
但它会引发如下错误(如果 xml 只有一个 <var..> 节点,那么它可以正常工作)。 错误 [10703] [IBM][DB2/LINUXX8664] SQL16085N XQuery“替换值”表达式的目标节点无效。错误 QName=err:“XUTY0008”。
解决方案
SQL16085N , QName = err:XUTY0008
错误:XUTY0008
expression-type 的值为“replace”或“replace value of”,并且替换表达式的目标节点不限定任何节点,限定两个或多个节点的序列,或者限定文档节点。它必须恰好限定一个不是文档节点的节点。
如果文档中有多个节点,则必须遍历节点。
请改用以下内容:
SELECT
XMLQUERY
('
transform
copy $new := $d1
modify
for $xnode in $new/root//var[@name=$element_name]
return do replace value of $xnode with $d
return $new
'
PASSING xmlparse
(document
'
<root>
<first>
<var name="user_input_attn_obligee_desc">OBLIGEE ATTORNEY</var>
</first>
<second>
<var name="user_input_attn_obligee_desc">saravanan</var>
</second>
<user_input_attn_obligor_desc>OBLIGOR ATTORNEY</user_input_attn_obligor_desc>
</root>
'
) AS "d1"
, 'EDWIN CHAND' AS "d"
, 'user_input_attn_obligee_desc' AS "element_name"
)
FROM SYSIBM.SYSDUMMY1;
推荐阅读
- sharepoint-2013 - 共享点列表表单或表单库表单
- android - 在android中创建矩形边框进度条
- udp - 为什么 UDP 标头有“长度”字段?
- python - 在 Conda UnsatisfiableError 消息中找不到冲突
- javascript - 无法使用 node.js/puppeteer 上传图像文件
- c# - 未显式转换其类型时如何调用重写的方法?
- java - Spring Boot将JSON属性创建为String的ArrayList不起作用
- php - 如何在 Ajax 成功时在喜欢和不喜欢之间切换?
- angular - 不清楚为什么在Angular“异步”管道中需要“as”
- javascript - 我有悬停效果的问题