3
id  parent_id  Name         Text
0 ...........  body_text   

1 ..........0  text....... . something

2 ..........0  blank       

3 ..........2  text ........ something

4 ...........  info        

5 ..........4  text ........ something

Who knows how to get the following xml format from the previous hierarchical table:

<?xml version "................."?>
<body_text>
<text>something</text>
<blank>
    <text>something</text>
</blank>
</body_text>
<info>
 <text>some</text>
</info>

The only know how to do part of this is and now that isn't working either:

select DBMS_XMLGEN.getXML(DBMS_XMLGEN.newcontextfromhierarchy('SELECT level,
XMLElement(evalname(Name), text))
from my_table t
START WITH id_parent is null
CONNECT BY PRIOR id = parent_id'))
 FROM dual

1 Answer 1

1

The query you have provided will give you result you are expecting. You just have a couple of syntactical errors. First. parent_id and id_parent column names have a different position of id in your query. Make them the same. Second. remove last parenthesis ) from XMLElement(evalname(Name), text))

SQL> set long 300

SQL> create table  t1 (id1,  parent_id,  Name1, Text) as(
  2  select 0, null, 'body_text', null        from dual union all
  3  select 1, 0,    'text',      'something' from dual union all
  4  select 2, 0,    'blank',     null        from dual union all
  5  select 3, 2,    'text' ,     'something' from dual union all
  6  select 4, null, 'info',      null        from dual union all
  7  select 5, 4,    'text',     'something'  from dual
  8  );

Table created

SQL> select DBMS_XMLGEN.getXML(DBMS_XMLGEN.newcontextfromhierarchy('SELECT level,
  2     XMLElement(evalname(Name1), text)
  3    from t1 t
  4    start with parent_id is null
  5    connect by prior id1 = parent_id')) xml
  6   from dual
  7  ;

xml
--------------------------------------------------------------------------------
<body_text>
  <text>something</text>
  <blank>
    <text>something</text>
  </blank>
</body_text>
<info>
  <text>something</text>
</info>

SQL>  select '<?xml version="1.0" ?>'
  2     || chr(10)
  3     || DBMS_XMLGEN.getXML(DBMS_XMLGEN.newcontextfromhierarchy('SELECT level,
  4            XMLElement(evalname(Name1), text)
  5          from t1 t
  6          start with parent_id is null
  7          connect by prior id1 = parent_id')) as xml
  8   FROM dual
  9  ;

XML
--------------------------------------------------------------------------------
<?xml version="1.0" ?>
<body_text>
  <text>something</text>
  <blank>
    <text>something</text>
  </blank>
</body_text>
<info>
  <text>something</text>
</info>
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.