在ABAP中从XML提取值

2020-09-07 09:50发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家们, 我需要从XML中提...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

我需要从XML中提取一个值,如下所示:

<?xml version =" 1.0" encoding =" utf-8"吗?>

- http://schema.sap.com/groupware " xmlns: asx =" http://www.sap.com/abapxml " xmlns:gw =" http://schema.sap.com/groupware " xmlns:xsi =" http://www.w3.org/2001/XMLSchema-instance " id =" 999999" type =" response" xsi: schemaLocation =" http://schema.sap.com/groupware http://mobis.wdf。 sap-ag.de:1080/msa/dev/doc/area_mw/components/GWIntegration/Design/GWAdapter/4.0/schema/gwmessage.xsd " xsi:type =" UserListType">

-

- HUMMEL@TEST.DE ">

-

在这里,我需要提取用户smtp_address的值。

此特定XML有一个十六进制值,如下所示:

3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D227574662D38223F3E0A3C6D65737361676520786D6C6E733D22687474703A2F2F736368656D612E7361702E636F6D2F67726F7570776172652220786D6C6E733A6173783D22687474703A2F2F7777772E7361702E636F6D2F61626170786D6C2220786D6C6E733A67773D22687474703A2F2F736368656D612E7361702E636F6D2F67726F7570776172652220786D6C6E733A7873693D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612D696E7374616E6365222069643D223939393939392220747970653D22726573706F6E73652220787369

从XML中,我需要提取User smtp_address的值,或者从上述十六进制值中提取。

先谢谢了。

Mahalakshmi

4条回答
Violet凡
2020-09-07 10:43 .采纳回答

您好,Mahalakshmi,

您可以使用XML DOM对象并解析XML以获取元素(SMTP_ADDRESS)并检索值。

示例代码:

数据:
lr_ixml类型参考到if_ixml,
lr_streamfactory类型参考到if_ixml_stream_factory,
lr_istream类型参考到if_ixml_istream,
lr_document类型参考到if_ixml_document,
lr_parser ,

lr_node_coll类型引用到if_ixml_node_collection,
lr_element类型引用到if_ixml_element,
lr_node类型引用到if_ixml_node,

lv_value TYPE字符串。

*创建XML流事实
lr_streamfactory = lr_ixml-> create_stream_factory()。

*创建输入流
lr_istream = lr_streamfactory-> create_istream_string(lv_xml_string)。 " lv_xml_string将包含字符串格式的XML内容

*创建空文档对象以存储文档和解析器对象
lr_document = lr_ixml-> create_document()。

*创建解析器
lr_parser = lr_ixml-> create_parser(stream_factory = lr_streamfactory
istream = lr_istream
document = lr_document)。

*解析(这将依次创建DOM)
lr_parser-> parse()。

lr_node_coll = lr_document-> get_elements_by_tag_name(name ='ITEM')。

*获取找到的元素数
lv_length = lr_node_coll-> get_length( )。


如果lv_length NE0。

*遍历找到的元素

做lv_length TIMES。


*设置 index(以0开头)
lv_index = sy-index-1。

*获取元素
lr_node = lr_node_coll-> get_item(lv_index)。

*元素的Typecase节点
lr_element?= l r_node。


*获取值

lv_value = lr_element-> get_attribute('')。

ENDDO。

一周热门 更多>