【发布时间】:2014-12-18 08:23:25
【问题描述】:
应用模型是 UIJavaServersideOracle StoredProcedures[DB]
我检索从存储过程 XML-Out 接收到的 XML 数据,并将其作为 JSON 对象传递给 UI。
这里是sn-p。
import oracle.xdb.XMLType;
import org.json.JSONObject;
XMLType studentsdataXML = null;
JSONObject xmlJSONObj = null;
studentsdataXML = (XMLType) callableStatement.getObject(5);
String xmlString = studentsdataXML.getString();
xmlJSONObj = XML.toJSONObject(xmlString); // using org.json library
//return xmlJSONObj ;
上面的代码运行良好,将 XML 转换为 JSON 对象,但是性能问题是在执行 studentsdataXML.getString() 时大约需要总执行时间的 3/4[从 UI 回到 UI ]。
问题是我是否可以直接进行 XML 到 JSON 的转换? [oracle.xdb.XMLType 到 JSON 对象] 或对可以执行此操作的不同库的任何建议
使用的 org.json 库:http://www.json.org/java/
更新1:将getString()更新为getStringVal()
即:String xmlString = studentsdataXML.getStringVal();
getStringVal() - http://docs.oracle.com/cd/B28359_01/appdev.111/b28391/oracle/xdb/XMLType.html#getStringVal__
本文推荐使用getStringVal()获取字符串值-http://docs.oracle.com/cd/B19306_01/appdev.102/b14259/xdb11jav.htm#g1039140
另外,时间测量sn-p:
...
long stime1 = System.currentTimeMillis();
String xmlString = studentsdataXML.getStringVal();
long etime1 = System.currentTimeMillis();
log.info("Total time (in ms) for XML object to String conversion : " + (etime1 - stime1));
long stimexml = System.currentTimeMillis();
xmlJSONObj = XML.toJSONObject(xmlString);
long etimexml = System.currentTimeMillis();
log.info("Total time (in ms) for XML String to JSON conversion : " + (etimexml - stimexml));
...执行查询以检索 XML 的总时间(以毫秒为单位):1308
XML 对象到字符串转换的总时间(以毫秒为单位):31452
XML 字符串到 JSON 转换的总时间(以毫秒为单位):423
Update2:另一个 SO 线程有一些类似的问题,但没有回答-Slow to convert Oracle 11g XMLType into Java String or Document
更新3:
当我在关闭连接后调用 getStringVal() 时,我得到了异常 - java.sql.SQLRecoverableException: Closed Connection
【问题讨论】:
-
是getString()方法由于从数据库中拉取或转换为字符串所用的时间吗?
-
是转换成String的时候,因为我测量了
studentsdataXML.getString();执行前后的时间 -
我说的是内部 getString().
-
ohhk,我将 getString() 更新为 getStringVal()。但问题仍然是一样的。根据文档,该方法从 XMLType 获取包含 XML 数据的字符串值。我更新了我的帖子。当你特别问这个问题时,我注意到按照 API 抛出的异常,它说 SQLException。所以它是从 DB 中拉出来的!?
-
也请看我的更新
标签: java xml json oracle xmltype