Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Create XML with CDATA section (using IF_IXML_DOCUMENT class)

Former Member
0 Likes
2,730

Hello,

I'm creating an XML file using the IF_IXML_DOCUMENT class.

This is going great, except that I'm not able to create a CDATA section in an element.

I've already tried to concatenate the <![CDATA[ into my variable, but the < is translated to &lt;.

So that didn't do the trick.

Anybody knows how to do this?

I know that there is a create_cdata_section method but I don't see how to use it.

Thanks in advance,

Andy.

5 REPLIES 5
Read only

Former Member
0 Likes
1,248

Not all at once please!

Read only

Former Member
0 Likes
1,248

solved in on my own

Read only

0 Likes
1,248

I'm struggling with same. Can you please share the solution?

Read only

0 Likes
1,248

Got it. Thanks anyways!

Example Code:

DATA:

ixml TYPE REF TO if_ixml,

document TYPE REF TO if_ixml_document,

parent TYPE REF TO if_ixml_node,

element TYPE REF TO if_ixml_element,

cdata TYPE REF TO if_ixml_cdata_section.

ixml = cl_ixml=>create( ).

document = ixml->create_document( ).

element = document->create_element( name = 'RootNode' ).

document->append_child( new_child = element ).

parent = element.

element = document->create_element( name = 'ChildNode' ).

parent->append_child( new_child = element ).

parent = element.

element = document->create_element( name = 'SomeOtherTag' ).

element->set_attribute( name = 'SomeValue' value = '4711' ).

cdata = document->create_cdata_section( `I0u2TRx6NqlX00002X56um` ).

element = document->create_element( name = 'Example' ).

element->append_child( new_child = cdata ).

parent->append_child( new_child = element ).

Read only

0 Likes
1,248

i CAN NOT DO IT WELL,could you please tell me how to do? how to add Cata?

<?xml version="1.0" encoding="utf-8" ?>

- <faxmakerdata>

- <recipients>

- <fax>

- <recipient>

<FIRSTNAME><![CDATA[]]></FIRSTNAME>

<LASTNAME><![CDATA[]]></LASTNAME>

<COMPANY><![CDATA[]]></COMPANY>

<DEPARTMENT><![CDATA[]]></DEPARTMENT>

<EMAILADDRESS><![CDATA[]]></EMAILADDRESS>

<NUMBER><![CDATA[27]]></NUMBER>

<VOICENUMBER><![CDATA[]]></VOICENUMBER>

</recipient>

</fax>

</recipients>

</faxmakerdata>

FORM create_xml.

CLASS cl_ixml DEFINITION LOAD.

l_ixml = cl_ixml=>create( ).

CALL METHOD l_ixml->create_encoding

EXPORTING

byte_order = 0

character_set = 'UTF-8'

RECEIVING

rval = l_encoding.

CALL METHOD l_ixml->create_document

RECEIVING

rval = l_doc.

CALL METHOD l_doc->set_encoding

EXPORTING

encoding = l_encoding.

CALL METHOD l_doc->create_simple_element

EXPORTING

name = 'faxmakerdata'

parent = l_doc

RECEIVING

rval = l_root.

CALL METHOD l_doc->create_simple_element

EXPORTING

name = 'recipients'

parent = l_root

RECEIVING

rval = l_recipients.

CALL METHOD l_root->append_child

EXPORTING

new_child = l_comment

RECEIVING

rval = l_rval.

PERFORM fill_itab2xml TABLES itab_matnr

USING 'fax'

'recipient'

l_recipients.

*CALL METHOD L_DOC->create_cdata_section( '81276160' ).

  • L_DOC->create_element( name = 'Example' ).

*L_ROOT->append_child( new_child = l_cdata ).

CALL METHOD l_ixml->create_stream_factory

RECEIVING

rval = l_factory.

CALL METHOD l_factory->create_ostream_itable

EXPORTING

table = xml_table

RECEIVING

rval = l_ostream.

CALL METHOD l_doc->render

EXPORTING

ostream = l_ostream

recursive = 'X'.

CALL METHOD l_ostream->get_num_written_raw

RECEIVING

rval = xml_size.

ENDFORM. "create_xml