当前位置: 首页 > 面试题库 >

从Oracle数据库表中生成带有自定义XML标记的XML文件

柳修为
2023-03-14
问题内容

我正在使用oracle数据库9ir2,我需要将某些表转换为具有自定义格式标签的xml文件。

例如:我想从emp表的某些列中生成XML,然后生成一个名为“ myxmlfile.xml”的文件,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<entity-engine-xml>
 <myxmlfile
  EMPNO="8401"
  ENAME="JHON"
  HIREDATE="1988-12-30"
  SAL="5000"
  DEPTNO="10"

 />
 <myxmlfile
    ...
 />
 <myxmlfile
    ...
 />
</entity-engine-xml>
  1. 如何使用上面的标签生成自定义XML文件,以及每次用户需要这样做时,换句话说,通过使用pl / sql“按用户请求”,如何使用oracle XML函数输出自定义的所需标签?
  2. 如何将xmltype转换为varchar2?… to_char()函数无法将XMLtype转换为char。
  3. 客户端创建XML文件的最简单方法是什么?

注意:该用户应用程序在XP PC上运行,该PC是由旧的oracle开发人员工具Forms6i构建的。


问题答案:

您可以使用XMLELEMENT等执行此操作

select xmlelement("entity-engine-xml",
                  xmlagg(
                    xmlelement(
                      "myxmlfile", 
                      xmlattributes(empno as "EMPNO",
                                    ename as "ENAME",
                                    to_char(hiredate, 'yyyy-mm-dd') as "HIREDATE",
                                    sal as "SAL",
                                    deptno as "DEPTNO"
                                    )
                    )
                  )
                 ).getclobval()
  from emp;

how to convert xmltype to varchar2 ???

为此有一个getStringVal函数。即在上面的例子中我用过getClobval。有一个getstringval()等效的。

编辑:假脱机:

set trims on feedback off heading off long 50000 linesize 32767 pagesize 0
col c format a32767
spool c:\temp\foo.xml
select xmlelement("entity-engine-xml",
                  xmlagg(
                    xmlelement(
                      "myxmlfile", 
                      xmlattributes(empno as "EMPNO",
                                    ename as "ENAME",
                                    to_char(hiredate, 'yyyy-mm-dd') as "HIREDATE",
                                    sal as "SAL",
                                    deptno as "DEPTNO"
                                    )
                    )
                  )
                 ).transform(xmltype('<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:template match="node()|@*">
  <xsl:copy>
   <xsl:apply-templates select="node()|@*"/>
  </xsl:copy>
 </xsl:template>
</xsl:stylesheet>')) c
  from emp;
spool off


 类似资料:
  • 当我试图使用数据绑定和绑定布局中的自定义XML标记运行项目时,遇到以下描述的构建错误:

  • 问题内容: 我想从具有存储为clob的XML列为testclob的表TRAPTABCLOB中使用sql提取Decision的值。 样本XML如下。 问题答案: 尝试 这是一个sqlfiddle演示

  • 我尝试了下面的XSLT,但我不知道如何删除,xml version=“1.0”encoding=“UTF-8”?>。请帮忙

  • 我正在尝试使用camel Bindy将管道分隔的字符串数据转换为xml。但它正在生成标记和类名。此外,我想添加命名空间到我的标记。 我试图使用Camel进程来生成自定义标记,但它不起作用。 输出result.xml 上面发布的是给定转换的输出。在第一个标记中,它打印带有整个包和类名的标记名(例如:com.abc.domain.pojo)。另外,我试图生成命名空间,但在输出中没有生成命名空间。

  • 问题内容: 我正在尝试制作一个用于创建自定义卡片的应用。我想在自定义背景上添加一些文本(jpg图像)。 最好的方法是什么?在将卡片发送到服务器之前,我需要向用户显示该卡片的预览。 谢谢 问题答案: 使用下面的代码来满足您的要求 您必须在清单文件中使用以下权限。 对于我的设备,访问外部SD卡的路径可能会因其他设备而异。某些设备可能是用于内部SD卡的。在使用此代码之前,只需检查一下即可。 实际上,我为

  • 问题内容: 我正在使用Java中的Smack API连接到XMPP服务器。 我想发送这样的自定义消息包: 我猜想我创建了自己的Packet,并以toXML()方法返回此XML。但这似乎不起作用。 任何帮助,将不胜感激。 问题答案: 您需要定义一个 自定义类 , 该类 应 实现ExtensionElement (由@Flow定义) 可以在此答案中获得产生以下节的非常详细的解释 其中 Reply 是自