2020-08-22 05:47发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我想从我的XML源提取一组节点到新的XML目标。 例如,我有以下XML字符串:
12 12
我想拥有以下XML字符串:
任何帮助将不胜感激:)
此致
Laurent G。
您可以使用if_ixml_node-> clone。 您是否了解所有XML接口,并且知道如何使用它们? (在SE24'cl_ixml *'和'if_ixml *'中查找)。
编码:
*接口 数据:iv_xml TYPE字符串, ev_xml TYPE字符串。 * xml数据 数据:lr_xml类型引用为if_ixml, lr_new_xml类型为if_ixml, lr_document类型参考if_ixml_document, lr_new_document类型参考if_ixml_document, lr_streamfactory类型参考if_ixml_stream_factory, lr_new_streamfactory类型参考if_ixml_stream_factory, lr_istream类型参考if_ixml_istream, lr_ostream类型参考if_ixml_ostream, lr_renderer类型参考if_ixml_renderer, lr_parser类型参考if_ixml_parser, lr_nodes类型参考if_ixml_node_collection, lr_node类型参考if_ixml_node, lr_new_node类型引用到if_ixml_node。 数据lv_index TYPE i。 数据lv_rval TYPE i。 *创建xml主工厂 调用方法cl_ixml => create 接收 rval = lr_xml。 *创建xml文档 调用方法lr_xml-> create_document 接收 rval = lr_document。 *创建xml流工厂 调用方法lr_xml-> create_stream_factory 接收 rval = lr_streamfactory。 *创建xml输入流 " iv_xml =' 12 12 "。 呼叫方法lr_streamfactory-> create_istream_string 出口 string = iv_xml"您的xml文档为字符串 接收 rval = lr_istream。 *创建xml解析器 调用方法lr_xml-> create_parser 出口 document = lr_document istream = lr_istream stream_factory = lr_streamfactory 接收 rval = lr_parser。 *将输入流解析为文档 调用方法lr_parser-> parse。 ****************************************************** ************ *读取节点 呼叫方法lr_document-> get_elements_by_tag_name 出口 名称='enc' 接收 rval = lr_nodes。 *读取节点 呼叫方法lr_nodes-> get_item 出口 索引= lv_index 接收 rval = lr_node。 如果lr_node不是INITIAL。 "创建新的xml 调用方法cl_ixml => create 接收 rval = lr_new_xml。 "创建新的xml文档 呼叫方法lr_new_xml-> create_document 接收 rval = lr_new_document。 克隆当前节点 lr_new_node = lr_node-> clone()。 "将新节点作为子节点追加到新文档中 lv_rval = lr_new_document-> append_child(lr_new_node)。 *创建新的xml流工厂 调用方法lr_new_xml-> create_stream_factory 接收 rval = lr_new_streamfactory。 *创建新的xml输出流作为字符串 呼叫方法lr_new_streamfactory-> create_ostream_cstring 出口 字符串= ev_xml 接收 rval = lr_ostream。 *创建xml渲染器 调用方法lr_new_xml-> create_renderer 出口 document = lr_new_document ostream = lr_ostream 接收 rval = lr_renderer。 *将文档渲染到输出流中 调用方法lr_renderer-> render。 万一。
LAURENT GUILLAUME ,很高兴能为您提供帮助。 让我知道它是否对您有用,或者您还有其他问题。
请注意:请对"评论"而不是"答案"使用"评论功能"。 您的"答案"应该是上面"答案"的"注释"。
你好迈克尔,
我知道cl_ixml *类,但我不像你那样熟练:)
克隆方法...当然...现在,我阅读了您的代码,这是清楚而合理的:)
非常感谢!!
最多设置5个标签!
您可以使用if_ixml_node-> clone。 您是否了解所有XML接口,并且知道如何使用它们? (在SE24'cl_ixml *'和'if_ixml *'中查找)。
编码:
LAURENT GUILLAUME ,很高兴能为您提供帮助。 让我知道它是否对您有用,或者您还有其他问题。
请注意:请对"评论"而不是"答案"使用"评论功能"。 您的"答案"应该是上面"答案"的"注释"。
你好迈克尔,
我知道cl_ixml *类,但我不像你那样熟练:)
克隆方法...当然...现在,我阅读了您的代码,这是清楚而合理的:)
非常感谢!!
一周热门 更多>