db2 - 从 DB2 中的多个 xml 节点和 xml 属性中检索一个值
问题描述
需要帮助来检索多个 xml 节点和 xml 属性下的值。下面是xml和查询。我正在尝试从 agent2 获取 ID 12945。非常感谢任何帮助。
<Message>
<PartyRole xsi:type="isf:Agent1"/>
<Id>12645</Id>
</PartyRole>
<PartyRole xsi:type="isf:Agent2"/>
<Id>12945</Id>
</PartyRole>
<PartyRole xsi:type="isf:Agent3">
<Id>52345</Id>
</PartyRole>
<Message>
询问:
XMLCAST(XMLQUERY('$file/*:Message/*:PartyRole/*:PartyRole[@xsi = "isf:Agent2"]/*:Id' PASSING XMLPARSE(DOCUMENT T1."XML_COLUMN") AS "file") AS CHAR(5)) AS AgentID
解决方案
您的 xml 无效!或者您刚刚粘贴了其中的一部分。
你有一个命名空间别名,它没有在任何地方定义 xsi
。此外,前两个节点是自关闭的,“孩子”正在挂起......
反正。
我试图“猜测”你的好 xml 是什么......如果使用这个:
<Message xmlns:xsi="anything">
<PartyRole xsi:type="isf:Agent1">
<Id>12645</Id>
</PartyRole>
<PartyRole xsi:type="isf:Agent2">
<Id>12945</Id>
</PartyRole>
<PartyRole xsi:type="isf:Agent3">
<Id>52345</Id>
</PartyRole>
</Message>
以下查询可以满足您的需求:
with goodxml(cxml) as ( values xmlparse( document ' <Message xmlns:xsi="anything">
<PartyRole xsi:type="isf:Agent1">
<Id>12645</Id>
</PartyRole>
<PartyRole xsi:type="isf:Agent2">
<Id>12945</Id>
</PartyRole>
<PartyRole xsi:type="isf:Agent3">
<Id>52345</Id>
</PartyRole>
</Message>' ) )
SELECT XMLCAST( XMLQUERY('$file/Message/PartyRole[@*:type="isf:Agent2"]/Id'
PASSING CXML AS "file") AS CHAR(5)) AS AgentID
FROM goodxml
AGENTID
-------
12945
1 record(s) selected.
推荐阅读
- android - Android Studio Kotlin 多次传递意图和全局数组?
- c# - 为什么该方法在没有调用脚本标签的情况下运行?
- javascript - 从 ReactJS 中的状态对象中删除以前的事件
- node.js - 在 MERN 应用程序中,如果您的服务器上有 app.get('/') 和
在您的客户端上,哪个将首先触发或优先? - c - 通过 Shaker 排序对数组的主对角线进行排序
- ios - Delphi/ios:如何在我的 iOS 应用程序中包含动态库?
- sql - SQL Server:当另一列中的另一个数字> 1时,如何使用该列中的值更新列
- python - Python ZIP 函数从文件中删除太多项目
- c# - .NET 2.0 中的多部分/表单数据请求
- nsis - 在 LangString 中实现超链接