首页 > 解决方案 > 如何在 Node.js 中从 Oracle 数据库创建 XML 文件?

问题描述

当我运行本地主机时,我试图将我的数据从 OracleDB 输出到 Node.js 中的 XML 文件。

这是我的代码的一部分:

router.get("/", async function(req, res, next) {
try {
connect = await oracledb.getConnection(information)
const value = await connection.execute('SELECT * FROM db')
res.json(js2xmlparser.parse("database", result.rows);
    } catch (err)

}

但是,当我转到 localhost - 它会打印出 xml 文本,但它不是 xml 文件。在本地主机中输出:

"<?xml version=1.0'?>\n<database>\n ........ "

标签: node.jsoraclenode-oracledb

解决方案


也许您的问题可以通过在发送输出之前执行此操作来解决:

res.writeHead(200, {"Content-Type": "text/xml"});

但这将取决于是什么res。我只是猜测这是一个 HTTP 响应。

关于 XML 本身,您可能想查看数据库的 XML 功能。你可以做一些有趣的事情,比如:

sql = `select dbms_xmlgen.getxml('
          select *
          from employees
          order by employee_id') xml
       from dual`;
binds = [];
options = { fetchInfo: { XML: { type: oracledb.STRING }} };

result = await connection.execute(sql, binds, options);
console.log(result.rows[0][0]);

这给出了如下输出:

<?xml version="1.0"?>
<ROWSET>
 <ROW>
  <EMPLOYEE_ID>100</EMPLOYEE_ID>
  <FIRST_NAME>Steven</FIRST_NAME>
  <LAST_NAME>King</LAST_NAME>
  <EMAIL>SKING</EMAIL>
  <PHONE_NUMBER>515.123.4567</PHONE_NUMBER>
  <HIRE_DATE>17-JUN-03</HIRE_DATE>
  <JOB_ID>AD_PRES</JOB_ID>
  <SALARY>24000</SALARY>
  <DEPARTMENT_ID>90</DEPARTMENT_ID>
 </ROW>
 <ROW>
  <EMPLOYEE_ID>101</EMPLOYEE_ID>
  . . . 

基准测试等,看看你喜欢哪种方法


推荐阅读