xml - 根据子节点值更新 XML 节点
问题描述
我正在尝试根据兄弟节点更新 XML 标记的值。
我的 XML 看起来像:
<root>
<mydata>
<submission>
<uname>rosy</uname>
<idlist>22,23,89</idlist>
<status>unavailable</status>
<oldstatus>unavailable</oldstatus>
</submission>
<submission>
<uname>amy</uname>
<idlist>22,23,89</idlist>
<status>unavailable</status>
<oldstatus>unavailable</oldstatus>
</submission>
<submission>
<uname>rosy</uname>
<idlist>66</idlist>
<status>unavailable</status>
<oldstatus>unavailable</oldstatus>
</submission>
</mydata>
</root>
我有一个查询,可用于根据一个参数更新节点。
UPDATE MYTABLE
SET MY_DATA =
UPDATEXML (
MY_DATA ,
'/root/mydata/submission[idlist=''22,23,89'']/status/text()',
'paid',
'/root/mydata/submission[idlist=''22,23,89'']/oldstatus/text()',
SYSDATE
)
WHERE ROW_ID = 1234;
也就是说,目前我可以根据“uname”或“idlist”查找节点。但我无法看到如何同时基于两个参数进行更新。
即“更新状态为已批准,其中 uname 为 rosy 且 idlist 为 22,23,89”。
任何指针?
解决方案
对我有用的解决方案是:
SET MY_DATA = UPDATEXML (MY_DATA, '/root/mydata/submission[idlist=''22,23,89'' and uname=''rosy'']/status/text()', 'paid')
由于某种原因,当 uname 中有特殊字符时,查询不起作用,但如果该字段只有字母或数字,那么它可以正常工作。
推荐阅读
- angular - 下面的代码在 Angular 8 中运行。但我需要在 Angular 6 中执行它。我该如何实现呢?
- python - Django:TimeoutError:[WinError 10060] 连接尝试-> 邮件后端设置不正确?
- javascript - 为 npm 注销 GitHub Packages
- r - R - 根据下拉列表中选择的值更新文本输入框 (tkentry) (ttkcombobox)
- node.js - 将 NodeJS 运行时从 8.10 更新到 10.x 或 12.x - AWS Amplify
- java - sdkman gradle 3.4 无法确定 java 版本
- c# - 使用 Windows 集成身份验证对自定义 API 进行身份验证
- javascript - 确保导入在 Typescript 中有效?
- android - 为什么在编译 C 代码 Makefile 时使用 CROSS_COMPILE 变量?
- c++ - UML 中的复杂类型定义