点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
专家们,
我需要从XML中提取一个值,如下所示:
<?xml version =" 1.0" encoding =" utf-8"吗?>
-
-
-
-
在这里,我需要提取用户smtp_address的值。
此特定XML有一个十六进制值,如下所示:
3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D227574662D38223F3E0A3C6D65737361676520786D6C6E733D22687474703A2F2F736368656D612E7361702E636F6D2F67726F7570776172652220786D6C6E733A6173783D22687474703A2F2F7777772E7361702E636F6D2F61626170786D6C2220786D6C6E733A67773D22687474703A2F2F736368656D612E7361702E636F6D2F67726F7570776172652220786D6C6E733A7873693D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612D696E7374616E6365222069643D223939393939392220747970653D22726573706F6E73652220787369
从XML中,我需要提取User smtp_address的值,或者从上述十六进制值中提取。
先谢谢了。
Mahalakshmi
您好,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。
我找到了一种简单的方法。 我测试了这段代码,它给了我有效的答复。
具有以下参数的方法:
导入IV_ELEMENT_NAME TYPE STRING
导入IV_XML_STRING TYPE XSTRING
返回值(RV_CONTENT)TYPE STRING
嗨,
请检查以下文档:
http://scn.sap.com/docs/DOC-35493
希望有帮助。
第一条语句:
*创建XML流事实
lr_streamfactory = lr_ixml-> create_stream_factory()。
短转储。 :-(
完成所有工作有些令人沮丧,并且无法越过第一行。 我不知道它是否经过测试。
错误分析由于该过程的调用者无法预期会发生该异常,因此当前程序已终止。
发生了一个异常,下面将对其进行详细说明。
分配给类'CX_SY_REF_IS_INITIAL'的异常未在过程" GET_CONTENT_IN_XML_TAG""((METHOD)")中捕获,也没有
该异常的原因是:
您尝试使用' NULL"对象引用(指向"无")访问组件。
对象引用必须指向对象(类的实例),然后才能用于访问组件。
从来没有引用过 设置或使用CLEAR语句将其设置为" NULL"。
一周热门 更多>