从 DB2 中的多个 xml 节点和 xml 属性中检索值
Retrieve a value from multiple xml nodes and xml attributes in DB2
需要帮助来检索多个 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.
需要帮助来检索多个 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.