mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-02 04:36:49 +08:00
SFPI: fix oref XML attributes
This commit is contained in:
parent
fd468a2b77
commit
f2d1467019
|
@ -18,6 +18,8 @@ CLASS lcl_object_sfpi DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||||
load
|
load
|
||||||
RETURNING VALUE(ri_wb_interface) TYPE REF TO if_fp_wb_interface
|
RETURNING VALUE(ri_wb_interface) TYPE REF TO if_fp_wb_interface
|
||||||
RAISING lcx_exception,
|
RAISING lcx_exception,
|
||||||
|
fix_oref
|
||||||
|
IMPORTING ii_document TYPE REF TO if_ixml_document,
|
||||||
interface_to_xstring
|
interface_to_xstring
|
||||||
RETURNING VALUE(rv_xstr) TYPE xstring
|
RETURNING VALUE(rv_xstr) TYPE xstring
|
||||||
RAISING lcx_exception.
|
RAISING lcx_exception.
|
||||||
|
@ -123,6 +125,58 @@ CLASS lcl_object_sfpi IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD fix_oref.
|
||||||
|
|
||||||
|
DATA: li_iterator TYPE REF TO if_ixml_node_iterator,
|
||||||
|
lv_name TYPE string,
|
||||||
|
lv_value TYPE string,
|
||||||
|
lv_new TYPE n LENGTH 3,
|
||||||
|
lv_old TYPE string,
|
||||||
|
lt_map TYPE STANDARD TABLE OF string WITH DEFAULT KEY,
|
||||||
|
li_attr_map TYPE REF TO if_ixml_named_node_map,
|
||||||
|
li_attr TYPE REF TO if_ixml_node,
|
||||||
|
li_node TYPE REF TO if_ixml_node.
|
||||||
|
|
||||||
|
DEFINE _lookup.
|
||||||
|
read table lt_map from &1 transporting no fields.
|
||||||
|
if sy-subrc <> 0.
|
||||||
|
append &1 to lt_map.
|
||||||
|
read table lt_map from &1 transporting no fields.
|
||||||
|
endif.
|
||||||
|
lv_new = sy-tabix + 100.
|
||||||
|
END-OF-DEFINITION.
|
||||||
|
|
||||||
|
|
||||||
|
li_iterator = ii_document->create_iterator( ).
|
||||||
|
li_node = li_iterator->get_next( ).
|
||||||
|
WHILE NOT li_node IS INITIAL.
|
||||||
|
li_attr_map = li_node->get_attributes( ).
|
||||||
|
|
||||||
|
IF li_attr_map IS BOUND.
|
||||||
|
li_attr = li_attr_map->get_named_item_ns( 'href' ).
|
||||||
|
IF li_attr IS BOUND.
|
||||||
|
lv_old = li_attr->get_value( ).
|
||||||
|
IF lv_old(2) = '#o'.
|
||||||
|
_lookup lv_old+1.
|
||||||
|
li_attr->set_value( '#o' && lv_new ).
|
||||||
|
ENDIF.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
li_attr = li_attr_map->get_named_item_ns( 'id' ).
|
||||||
|
IF li_attr IS BOUND.
|
||||||
|
lv_old = li_attr->get_value( ).
|
||||||
|
IF lv_old(1) = 'o'.
|
||||||
|
_lookup lv_old.
|
||||||
|
li_attr->set_value( 'o' && lv_new ).
|
||||||
|
ENDIF.
|
||||||
|
ENDIF.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
li_node = li_iterator->get_next( ).
|
||||||
|
ENDWHILE.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD lif_object~serialize.
|
METHOD lif_object~serialize.
|
||||||
|
|
||||||
DATA: lv_xstr TYPE xstring,
|
DATA: lv_xstr TYPE xstring,
|
||||||
|
@ -131,6 +185,7 @@ CLASS lcl_object_sfpi IMPLEMENTATION.
|
||||||
|
|
||||||
lv_xstr = interface_to_xstring( ).
|
lv_xstr = interface_to_xstring( ).
|
||||||
li_document = cl_ixml_80_20=>parse_to_document( stream_xstring = lv_xstr ).
|
li_document = cl_ixml_80_20=>parse_to_document( stream_xstring = lv_xstr ).
|
||||||
|
fix_oref( li_document ).
|
||||||
io_xml->set_raw( li_document->get_root_element( ) ).
|
io_xml->set_raw( li_document->get_root_element( ) ).
|
||||||
|
|
||||||
ENDMETHOD. "serialize
|
ENDMETHOD. "serialize
|
||||||
|
|
Loading…
Reference in New Issue
Block a user