通过DISPLAY_XML_DOCUMENT显示IF_IXML_ELEMENT对象

时间:2019-03-13 15:52:00

标签: xml abap

我有一个程序可以通过功能模块DISPLAY_XML_DOCUMENT显示XML文档:

DATA(xml_document) = new cl_xml_document( ).
xml_document->parse_string( `<ROOT><city><name>Paris</name>` &&
        `<country><name>France</name><iso>FRA</iso></country>` &&
        `</city></ROOT>` ).

" Display the whole document
CALL FUNCTION 'DISPLAY_XML_DOCUMENT'
  EXPORTING
    xml_document = xml_document
  EXCEPTIONS
    OTHERS       = 1.

" Extract the country name and ISO code

DATA(element) = CAST if_ixml_element(
            xml_document->find_node( name = '/ROOT/city/country' ) ).

" Display the whole document
CALL FUNCTION 'DISPLAY_XML_DOCUMENT'
  EXPORTING
    xml_document = element
  EXCEPTIONS
    OTHERS       = 1.

对功能模块DISPLAY_XML_DOCUMENT的第一次调用将显示整个XML文档:

enter image description here

然后用element初始化<country><name>France</name><iso>FRA</iso></country>对象。类型为IF_IXML_ELEMENT

A,元素的显示出现运行时错误CX_SY_DYN_CALL_ILLEGAL_TYPE ,因为期望的对象类型为CL_XML_DOCUMENT_BASE,而不是类型为IF_IXML_ELEMENT的对象。

如何通过element显示DISPLAY_XML_DOCUMENT对象?

1 个答案:

答案 0 :(得分:2)

按如下所示将元素附加到新的空XML文档实例:

DATA(new_xml_document) = new cl_xml_document_base( ).
new_xml_document->create_with_node( element ).

CALL FUNCTION 'DISPLAY_XML_DOCUMENT'
  EXPORTING
    xml_document = new_xml_document
  EXCEPTIONS
    OTHERS       = 1.

这是结果:

enter image description here