Цитата:
Приведите код как вы формируете инстанции List и Row.
List я получаю через if_ixml_node->clone( ) c шаблонного узла и после работаю только с ним.
Row я получаю перебором всех нижестоящих узлов List по условию if_ixml_node->get_name( ) = 'Row' AND if_ixml_node->get_value( ) = 'Искомый текст' или просто порядковый номер узла:
Code:
DATA table TYPE REF TO if_ixml_node.
table = List->get_first_child( ).
WHILE NOT table IS INITIAL AND table->get_name( ) <> 'Table'. "<Table> строго 1 узел, но на одном с ним уровне могут быть другие
table = table->get_next( ).
ENDWHILE.
DATA row TYPE REF TO if_ixml_node.
DATA index TYPE i.
row = table->get_first_child( ).
WHILE NOT row IS INITIAL.
IF row->get_name( ) = 'Row'. "Могут быть другие узлы на одном уровне
ADD 1 TO index.
IF index = ИСКОМЫЙ_НОМЕР_УЗЛА.
result = row.
EXIT.
ENDIF.
ENDIF.
row = row->get_next( ).
ENDWHILE.
Цитата:
То, что аттрибуты одинаковые еще не говорит о том что это одна и таже инстанция
100% атрибут Name уникальный в пределах файла с которым я работаю.
Самое интересное, что если сымитировать отработку условия и продолжить обработку, то новые узлы/данные добавятся куда надо. Т.е. по факту обе ссылки все-таки указывают на один объект.
Сейчас еще вот что проверил:
Code:
...
METHODS m1 IMPORTING list TYPE REF TO if_ixml_node
row TYPE REF TO if_ixml_node.
...
METHOD m1.
DATA node TYPE REF TO if_ixml_node.
node = list->get_first_child( ).
node = node->get_parent( ).
IF node = list.
"нифига не входит
ENDIF.
ENDMETHOD.
Т.е. беру у узла ZZZ первого потомка, потом у этого потомка беру родителя. То есть должен получить снова узел ZZZ.