删除指定xml节点下所有子节点的ABAP代码

简介: 删除指定xml节点下所有子节点的ABAP代码

METHOD DELETE_XML_NODE.

***********************************************************************

*  This method deletes all tags which belong to a given XML node

***********************************************************************

 DATA: lo_converter                 TYPE REF TO cl_http_request.

 DATA: lv_xml_string        TYPE string.

 DATA: lv_node_start_search_string TYPE string.

 DATA: lv_node_end_search_string TYPE string.

 DATA: lv_node_found TYPE apc_v_indicator.

 DATA: lv_node_start    TYPE i.

 DATA: lv_node_end_start TYPE i.

 DATA: lv_node_end_length TYPE i.

 DATA: lv_node_end      TYPE i.

 DATA: lv_node_length   TYPE i.

 DATA: lv_bin_sign(1) TYPE X.

 DATA: lv_bin_initial TYPE xstring.

*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* delete 'line feed, new line' from cv_xml_xstring, as it can not be

* converted to string

 lv_bin_sign = '0A'.

 REPLACE ALL OCCURRENCES OF lv_bin_sign IN cv_xml_xstring WITH lv_bin_initial IN BYTE MODE.

 TRY.

   CREATE OBJECT lo_converter

     EXPORTING

       add_c_msg = 1.

*   convert given xml xstring to string

   CALL METHOD lo_converter->if_http_entity~set_data

     EXPORTING

       data = cv_xml_xstring.

   CALL METHOD lo_converter->if_http_entity~get_cdata

     RECEIVING

       data = lv_xml_string.

*   for the node's start, we have to search for the opening tag of the given node name

   CONCATENATE '<' iv_xml_node_name

   INTO lv_node_start_search_string.

*   for the node's end, we have to search for the closing tag of the given node name

   CONCATENATE ''

   INTO lv_node_end_search_string.

*   assume that there's at least one occurence of the node

   lv_node_found = abap_true.

*   loop as the node can occur several times

   WHILE lv_node_found EQ abap_true.

     FIND lv_node_start_search_string

     IN lv_xml_string

     MATCH OFFSET lv_node_start.

     IF sy-subrc = 0. " node's opening tag found!

       FIND lv_node_end_search_string

       IN lv_xml_string

       MATCH OFFSET lv_node_end_start

       MATCH LENGTH lv_node_end_length.

       lv_node_end = lv_node_end_start + lv_node_end_length.

*       for REPLACE SECTION statement the length of the whole nodes string is needed

       lv_node_length = lv_node_end - lv_node_start.

*       delete currently found occurrence of given node from xml

       REPLACE SECTION OFFSET lv_node_start LENGTH lv_node_length OF lv_xml_string WITH ''.

     ELSE. " NO node's opening tag found! -> all occurrences of node already deleted

       lv_node_found = abap_false.

       EXIT.

     ENDIF.

   ENDWHILE.

*   convert changed xml string back to xstring

   CALL METHOD lo_converter->if_http_entity~set_cdata

     EXPORTING

       data = lv_xml_string.

   CALL METHOD lo_converter->if_http_entity~get_data

     RECEIVING

       data = cv_xml_xstring.

 ENDTRY.

ENDMETHOD.

```要获取更多Jerry的原创文章,请关注公众号"汪子熙":

相关文章
|
4天前
|
XML JavaScript 数据格式
XML DOM 遍历节点树
在处理XML文档时,我们常需提取各元素值,这时就要用到XML DOM的节点树遍历功能。以下示例展示了如何遍历根元素的所有子节点,并输出它们的名称和值:例如 &quot;title: Everyday Italian&quot;,&quot;author: Giada De Laurentiis&quot; 和 &quot;year: 2005&quot;。实现步骤包括:加载XML字符串到xmlDoc对象,获取根元素子节点,最后输出每个子节点的名称与文本节点的值。
|
15天前
|
XML Java 数据格式
Spring5入门到实战------11、使用XML方式实现AOP切面编程。具体代码+讲解
这篇文章是Spring5框架的AOP切面编程教程,通过XML配置方式,详细讲解了如何创建被增强类和增强类,如何在Spring配置文件中定义切入点和切面,以及如何将增强逻辑应用到具体方法上。文章通过具体的代码示例和测试结果,展示了使用XML配置实现AOP的过程,并强调了虽然注解开发更为便捷,但掌握XML配置也是非常重要的。
Spring5入门到实战------11、使用XML方式实现AOP切面编程。具体代码+讲解
|
2天前
|
XML JavaScript 数据格式
XML DOM 遍历节点树
XML DOM 遍历节点树
|
8天前
|
XML JavaScript 数据格式
XML DOM 遍历节点树
在处理XML文档时,我们常需提取各元素值,这时就要用到XML DOM的节点树遍历功能。以下示例展示了如何遍历根元素的所有子节点,并输出它们的名称和值:例如 &quot;title: Everyday Italian&quot;,&quot;author: Giada De Laurentiis&quot; 等。
|
12天前
|
XML JavaScript 数据格式
XML DOM 遍历节点树
在处理XML文档时,我们常需提取各元素值,这时就要用到XML DOM的节点树遍历功能。以下示例展示了如何遍历根元素的所有子节点,并输出它们的名称和值:例如 &quot;title: Everyday Italian&quot;,&quot;author: Giada De Laurentiis&quot; 等。
|
18天前
|
XML JavaScript 数据格式
XML DOM 遍历节点树
在处理XML文档时,我们常需提取各元素值,这时就要用到XML DOM的节点树遍历功能。以下示例展示了如何遍历根元素的所有子节点,并输出它们的名称和值:例如 &quot;title: Everyday Italian&quot;,&quot;author: Giada De Laurentiis&quot; 和 &quot;year: 2005&quot;。实现步骤包括:加载XML字符串到xmlDoc对象,获取根元素子节点,然后遍历并输出每个子节点的信息。
|
20天前
|
XML JavaScript 数据格式
XML DOM 遍历节点树
在处理XML文档时,我们常需提取各元素值,这时就要用到XML DOM的节点树遍历功能。以下示例展示了如何遍历根元素的所有子节点,并输出它们的名称和值:例如 &quot;title: Everyday Italian&quot;,&quot;author: Giada De Laurentiis&quot; 和 &quot;year: 2005&quot;。此例首先将XML字符串加载至xmlDoc中,接着获取根元素的子节点,并逐一输出每个子节点的信息。
|
6天前
|
XML JavaScript 数据格式
XML DOM 遍历节点树
在处理XML文档时,我们常需提取各元素值,这时就要用到XML DOM的节点树遍历功能。以下示例展示了如何遍历根元素的所有子节点,并输出它们的名称和值:例如 &quot;title: Everyday Italian&quot;,&quot;author: Giada De Laurentiis&quot; 等。
|
10天前
|
XML JavaScript 数据格式
XML DOM 遍历节点树
在处理XML文档时,我们常需提取各元素值,这时就要用到XML DOM的节点树遍历功能。以下示例展示了如何遍历根元素的所有子节点,并输出它们的名称和值:例如 &quot;title: Everyday Italian&quot;,&quot;author: Giada De Laurentiis&quot; 和 &quot;year: 2005&quot;。实现步骤包括:加载XML字符串到xmlDoc对象,获取根元素子节点,最后输出每个子节点的名称与文本节点的值。
|
14天前
|
XML JavaScript 数据格式
XML DOM 遍历节点树
在处理XML文档时,我们常需提取各元素值,这时就要用到XML DOM的节点树遍历功能。以下示例展示了如何遍历根元素的所有子节点,并输出它们的名称和值:例如 &quot;title: Everyday Italian&quot;,&quot;author: Giada De Laurentiis&quot; 和 &quot;year: 2005&quot;。实现步骤包括:加载XML字符串至xmlDoc;获取根元素子节点;输出各子节点名称及文本节点值。