【问题标题】:Add a child XMLElement to Existing XML将子 XMLElement 添加到现有 XML
【发布时间】:2019-01-04 17:05:50
【问题描述】:

我正在使用循环创建一个父 XML,并且我想在其中插入另一个 XML。有没有办法可以在第一个 XML 中插入我的第二个 XML?

每个家庭的外循环

每个家庭的孙子的内循环

SELECT XMLELEMENT ("grandkids"    
                       ,XMLELEMENT("kid1", 'ron')  
                       ,XMLELEMENT("age", '12')  
) INTO TESTXML2 FROM DUAL; 

结束孙子循环;

SELECT XMLELEMENT ("Family"  
                     ,XMLELEMENT("father", 'myFather')  
                     ,XMLELEMENT("mother", 'myMother')  
                     ,XMLELEMENT("children", '2')  
                             <---INSERT TESTXML2 HERE--->
) INTO TESTXML FROM DUAL; 

结束家庭循环;

如何在 TESTXML1 中插入 TESTXML2 ?

可以在创建 FamilyXML 时插入,也可以在 FamilyXML 插入数据库后更新。

【问题讨论】:

    标签: xml database oracle oracle11g


    【解决方案1】:

    您可以只引用您的 testxml2 变量:

    declare
      testxml xmltype;
      testxml2 xmltype;
    begin
    
    SELECT XMLELEMENT ("grandkids"    
                           ,XMLELEMENT("kid1", 'ron')  
                           ,XMLELEMENT("age", '12')  
    ) INTO TESTXML2 FROM DUAL; 
    
    dbms_output.put_line(testxml2.getstringval());
    
    SELECT XMLELEMENT ("Family"  
                         ,XMLELEMENT("father", 'myFather')  
                         ,XMLELEMENT("mother", 'myMother')  
                         ,XMLELEMENT("children", '2')  
                         ,testxml2
    ) INTO TESTXML FROM DUAL; 
    
    dbms_output.put_line(testxml.getstringval());
    
    end;
    /
    
    <grandkids><kid1>ron</kid1><age>12</age></grandkids>
    <Family><father>myFather</father><mother>myMother</mother><children>2</children><grandkids><kid1>ron</kid1><age>12</age></grandkids></Family>
    
    PL/SQL procedure successfully completed.
    

    或者将所有嵌套的 XMLElement 调用放在一个查询中:

    declare
      testxml xmltype;
    begin
    
    SELECT XMLELEMENT ("Family"  
                         ,XMLELEMENT("father", 'myFather')  
                         ,XMLELEMENT("mother", 'myMother')  
                         ,XMLELEMENT("children", '2')  
                         ,XMLELEMENT ("grandkids"    
                           ,XMLELEMENT("kid1", 'ron')  
                           ,XMLELEMENT("age", '12')  
                          )
    ) INTO TESTXML FROM DUAL; 
    
    dbms_output.put_line(testxml.getstringval());
    
    end;
    /
    
    <Family><father>myFather</father><mother>myMother</mother><children>2</children><grandkids><kid1>ron</kid1><age>12</age></grandkids></Family>
    
    PL/SQL procedure successfully completed.
    

    如果您实际上是从表中获取数据,请查看 XMLAgg、XMLForest 等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-27
      相关资源
      最近更新 更多