首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向现有XMLElement添加子XML

向现有XMLElement添加子XML
EN

Stack Overflow用户
提问于 2018-07-27 22:34:52
回答 1查看 62关注 0票数 0

我正在使用循环创建一个父XML,并希望在其中插入另一个XML。有没有办法将我的第二个XML插入到第一个XML中?

每个族的外部循环

每个家庭的孙子孙女的内循环

代码语言:javascript
复制
SELECT XMLELEMENT ("grandkids"    
                       ,XMLELEMENT("kid1", 'ron')  
                       ,XMLELEMENT("age", '12')  
) INTO TESTXML2 FROM DUAL; 

结束孙子循环;

代码语言:javascript
复制
SELECT XMLELEMENT ("Family"  
                     ,XMLELEMENT("father", 'myFather')  
                     ,XMLELEMENT("mother", 'myMother')  
                     ,XMLELEMENT("children", '2')  
                             <---INSERT TESTXML2 HERE--->
) INTO TESTXML FROM DUAL; 

终端族循环;

如何在TESTXML1中插入TESTXML2?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-27 23:52:27

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

代码语言:javascript
复制
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调用放在一个查询中:

代码语言:javascript
复制
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等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51560224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档