如何在运行时将XML的一部分附加到XML文件中?

时间:2018-01-21 05:59:14

标签: sql xml oracle plsql

我有以下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中的追加?

1 个答案:

答案 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;