xml - 将子 XMLElement 添加到现有 XML
问题描述
我正在使用循环创建父 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 插入数据库后更新。
解决方案
您可以只引用您的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 等。
推荐阅读
- php - 从外部修改 Laravel 包中的变量
- vue.js - VueJS在带有createElement的渲染函数中使用VNode?
- javascript - 更新 react js 中的表单并不会跟踪所有道具的状态
- amazon-web-services - 写入 aws s3 存储桶时 Spark 作业失败 -
- reactjs - React 如何在材质 ui 表中固定/显示/张贴带有可见性图标(眼睛)的按钮?
- amazon-web-services - AWS 上的 Lambda 函数在 EC2 关闭之前发送通知
- java - 如何将变量传递给Java中的不同线程
- asp.net-web-api - 当 API 版本在 URL 中时,为什么 Swagger 需要版本请求参数?
- php - 无法在 Windows 中将 PHP 7.1 升级到 PHP 7.2
- javascript - ES6 模块,什么算作第一次导入?