Skip to Main Content

APEX

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

How to open a tree to a specific node? (Apex 19.2)

John like many othersOct 26 2020 — edited Oct 26 2020

Hello
I would like to open a tree to a specific hierarchical position after it was refresh (comes in closed state).
Based on the tree widget API I assume I have to open all nodes above the target. I can get all the NodeIDs before I would refresh the treeView: getExpandedNodeIds() but there are two problems with that:
This function returns the Node IDs not in a sorted way (from root to target node)
The Node ID is not stored in the HTML structure, so can't be referenced that way
The nicest/easiest way would be to hand over a jQuery object or a DOM object that defines the target node to which the tree should be expanded. Is something like this available and I didn't see it? If not, is there any other way to get the tree expanded to a specific node?

Comments

Paulzip

This looks like a half house JSON document. Is this actual document JSON?

Paulzip

Here you go, something like this. I'm splitting on the braces, rather than the content.

with data(clb) as (
 select 
'{

adam smith

class:abcd

}

{

xxxyyyy

class:abcd

}

{

zzzz

class:abcd

}'
 from dual 
)
, sections(num, clb, start_, end_) as (
 select level, clb, instr(clb, '{', 1, level), instr(clb, '}', 1, level)
 from data
 connect by instr(clb, '}', 1, level) > 0
)
select num, substr(clb, start_, end_-start_+1) str
from sections
aetl

Hello Paulzip,

Your code is working correctly but i couldn't explain my problem.Yes it is an actual json .Here is a sample jscon code. i have a json file like this . When i tried to insert this it raised check constraint error . Becasue there are two "_id" values .İf i insert id by id not in same time it worked .İ want to split braches every "class_..."

{
"_id" : "1000099721",
"id" : [
{
"value" : "55555",
"schemeName" : "MSISDN",
"schemeAgencyName" : "xx"
},
{
"value" : "12416408",
"schemeName" : "CustomerId",
"schemeAgencyName" : "xx"
},
{
"value" : "441630",
"schemeName" : "OTP",
"schemeAgencyName" : "xx"
}
],
"_class" : "model.salesorder.SalesOrderVBO"
}
{
"_id" : "1000099721",
"id" : [
{
"value" : "6666",
"schemeName" : "MSISDN",
"schemeAgencyName" : "xx"
},
{
"value" : "12416408",
"schemeName" : "CustomerId",
"schemeAgencyName" : "xx"
},
{
"value" : "441630",
"schemeName" : "OTP",
"schemeAgencyName" : "xx"
},
{
"value" : "ffa357ee-9759-42ab-8a98-30ea9d410319",
"schemeName" : "ShoppingCartId",
"schemeAgencyName" : "xx"
},
{
"value" : "1000099721",
"schemeName" : "OrderId",
"schemeAgencyName" : "xx"
}
],
"_class" : "model.salesorder.SalesOrderVBO"
}

BluShadow

So, as it's actual JSON you're dealing with, have you considered using the Oracle built-in functionality for JSON data?
JSON Developer's Guide (0 Bytes)

Paulzip

Then why didn't you say it was JSON rather than post an example that wasn't? It just wastes people, like myself's time.

Which Oracle version?

aetl

Oracle 12.2

Paulzip
Answer

Again, your JSON isn't valid. It's an array and you don't have an array marker around it or a comma between the array items. You need to take more care in your posts.

with data(jsn) as (
 select 
 '[ 
  {
  "_id":"1000099721",
  "id":[
   {
     "value":"55555",
     "schemeName":"MSISDN",
     "schemeAgencyName":"xx"
   },
   {
     "value":"12416408",
     "schemeName":"CustomerId",
     "schemeAgencyName":"xx"
   },
   {
     "value":"441630",
     "schemeName":"OTP",
     "schemeAgencyName":"xx"
   }
  ],
  "_class":"model.salesorder.SalesOrderVBO"
}
,{
  "_id":"1000099721",
  "id":[
   {
     "value":"6666",
     "schemeName":"MSISDN",
     "schemeAgencyName":"xx"
   },
   {
     "value":"12416408",
     "schemeName":"CustomerId",
     "schemeAgencyName":"xx"
   },
   {
     "value":"441630",
     "schemeName":"OTP",
     "schemeAgencyName":"xx"
   },
   {
     "value":"ffa357ee-9759-42ab-8a98-30ea9d410319",
     "schemeName":"ShoppingCartId",
     "schemeAgencyName":"xx"
   },
   {
     "value":"1000099721",
     "schemeName":"OrderId",
     "schemeAgencyName":"xx"
   }
  ],
  "_class":"model.salesorder.SalesOrderVBO"
}
]'
from dual
)
select c.*
from data d, 
   json_table (
     d.jsn
   , '$[*]'
     columns (
       order_pos for ordinality
     , id varchar2(30) path '$."_id"'
     , nested path '$[*]'
       columns (
         content varchar2(4000 byte) format json path '$'
       ) 
     )
   ) c
/

ORDER_POS    ID               CONTENT
1            1000099721       {"_id":"1000099721","id":[{"value":"55555","schemeName":"MSISDN","schemeAgencyName":"xx"},{"value":"12416408","schemeName":"CustomerId","schemeAgencyName":"xx"},{"value":"441630","schemeName":"OTP","schemeAgencyName":"xx"}],"_class":"model.salesorder.SalesOrderVBO"}
2            1000099721       {"_id":"1000099721","id":[{"value":"6666","schemeName":"MSISDN","schemeAgencyName":"xx"},{"value":"12416408","schemeName":"CustomerId","schemeAgencyName":"xx"},{"value":"441630","schemeName":"OTP","schemeAgencyName":"xx"},{"value":"ffa357ee-9759-42ab-8a98-30ea9d410319","schemeName":"ShoppingCartId","schemeAgencyName":"xx"},{"value":"1000099721","schemeName":"OrderId","schemeAgencyName":"xx"}],"_class":"model.salesorder.SalesOrderVBO"} 


Marked as Answer by aetl · Nov 27 2020
1 - 7

Post Details

Added on Oct 26 2020
4 comments
591 views