我有以下XML。我试图在运行时更新/附加XML的一部分。 但它很难。
<XML>
<FRUIT_SHOP>JARVIZ</FRUIT_SHOP>
<FRUITS>
<FRUIT>
<FRUIT_NAME>ORANGE</FRUIT_NAME>
<ORANGE_FIELDS>
<FIELD>
<KEY>COLOUR</KEY>
<VALUE>LIGHT_RED</VALUE>
</FIELD>
<FIELD>
<KEY>WEIGHT</KEY>
<VALUE>1KG</VALUE>
</FIELD>
</ORANGE_FIELDS>
</FRUIT>
</FRUITS>
这是期待!
<XML>
<FRUIT_SHOP>JARVIZ</FRUIT_SHOP>
<FRUITS>
<FRUIT>
<FRUIT_NAME>ORANGE</FRUIT_NAME>
<ORANGE_FIELDS>
<FIELD>
<KEY>COLOUR</KEY>
<VALUE>LIGHT_RED</VALUE>
</FIELD>
<FIELD>
<KEY>WEIGHT</KEY>
<VALUE>1KG</VALUE>
</FIELD>
<FIELD>
<KEY>MADE</KEY>
<VALUE>Florida</VALUE>
</FIELD>
</ORANGE_FIELDS>
</FRUIT>
</FRUITS>
指导我如何在运行时处理XML中的追加?
答案 0 :(得分:0)
您可以在Oracle中使用INSERTCHILDXML
。
WITH t ( old_xml, child_xml, node, field_name) AS
( SELECT
'<XML>
<FRUIT_SHOP>JARVIZ</FRUIT_SHOP>
<FRUITS>
<FRUIT>
<FRUIT_NAME>ORANGE</FRUIT_NAME>
<ORANGE_FIELDS>
<FIELD>
<KEY>COLOUR</KEY>
<VALUE>LIGHT_RED</VALUE>
</FIELD>
<FIELD>
<KEY>WEIGHT</KEY>
<VALUE>1KG</VALUE>
</FIELD>
</ORANGE_FIELDS>
</FRUIT>
</FRUITS>
</XML>
' old_xml,
'<FIELD>
<KEY>MADE</KEY>
<VALUE>Florida</VALUE>
</FIELD>' child_xml,
'/XML/FRUITS/FRUIT/ORANGE_FIELDS' node,
'FIELD' field_name
FROM dual)
SELECT
INSERTCHILDXML(XMLTYPE(old_xml),
node,
field_name,
XMLTYPE(child_xml))
FROM t;