ABAP:XML

CL_IXML

  • DATA(IXML) = CL_IXML=>CREATE( )

引用变量ixml的静态类型是接口IF_IXML,其中包含创建更多对象(如streams, XML documents, parsers, or renderers)所需的所有工厂方法。

  • DATA(stream_factory) = ixml->create_stream_factory( ).

参考变量stream_factory的静态类型是接口IF_IXML_STREAM_FACTORY,其中包含输入流的工厂方法CREATE_ISTREAM _...和输出流的CREATE_OSTREAM _...。
可以为不同的数据源和数据接收器创建不同的数据流,例如字符串,内部表格或由URI指定的文件。
isteram 用于将abap变量的xml数据传递给ixml.其可以作为CALL TRANSFORMATION id 的source.
ostream 用于将ixml数据传递给abap变量.

CALL TRANSFORMATION id SOURCE text = `Hello XML!` 
                       RESULT XML DATA(xml_string). 

DATA(ixml) = cl_ixml=>create( ). 
DATA(stream_factory) = ixml->create_stream_factory( ). 
DATA(istream)        = stream_factory->create_istream_xstring( xml_string ). 

DATA result type string. 
CALL TRANSFORMATION id SOURCE XML istream 
                       RESULT text = result. 
 

DATA(ixml) = cl_ixml=>create( ).
DATA(document) = ixml->create_document( ).

CALL TRANSFORMATION id SOURCE text = Hello XML!

                   RESULT XML document. 

DATA xml_string TYPE string.
ixml->create_renderer( document = document

                   ostream  = ixml->create_stream_factory( 
                                )->create_ostream_cstring( 
                                     string = xml_string ) 
                                       )->render( ). 
                                       
  • XML Documents

DATA(ixml) = cl_ixml=>create( ).
DATA(document) = ixml->create_document( ).
以这种方式创建的文档
用于处理保存为DOM的XML文档,
可以绑定到parser来填充它,
可用于构建新的XML数据或修改现有数据,
可以传递给render以产生render的输出。

  • iXML Library - Parse

    DATA(ixml) = cl_ixml=>create( ).
    DATA(parser) = ixml->create_parser(

                    istream        = ... 
                    document       = ... 
                    stream_factory = ... ). 

parser检查输入流istream的XML数据是否正确,并在内存中创建该文件的DOM表示。 方法PARSE的返回值具有类型i,并使用值生成与类型组IXML中的以下常量相匹配的结果:
ixml_mr_parser_ok
解析的XML数据没有任何错误。 解析成功,所有XML数据在保存的XML文档中都可用。
ixml_mr_parser_error
解析的XML数据有错误。 虽然解析器从具有错误的XML文件创建了有效的DOM,但通常不包含所有的XML数据。 这些错误可以分析。
ixml_mr_parser_fatal_error
XML文件根本无法解析。 这个错误通常不会再发生。
如果解析成功,则与解析器关联的XML文档文档可用于访问保存在内存中的DOM。
DATA(ixml) = cl_ixml=>create( ).
DATA(stream_factory) = ixml->create_stream_factory( ).

DATA(istream)        = stream_factory->create_istream_string( 
  `<?xml version="1.0"?>`         && 
  `  <text>`                      && 
  `    Mer lasse de DOM in Kölle` && 
  `  </text>` ). 

DATA(document)       = ixml->create_document( ). 
DATA(parser) = ixml->create_parser( 
                         stream_factory = stream_factory 
                         istream        = istream 
                         document       = document ). 

DATA(rc) = parser->parse( ). 

IF rc <> ixml_mr_parser_ok. 
  ... "Error handling 
  RETURN. 
ENDIF. 
  • iXML Library - DOM Reads

直接读取可用于创建对DOM中节点对象的引用。 然后可以使用这些引用来访问方法并获取节点的属性。 在这里,任何节点都可以用作访问其子节点的起点。
Access by Root Element
Access to Subnodes
Access to adjacent subnodes
Access using node lists
Access Using Element Names
Access to Attributes
Attribute access using lists
Short forms for attribute access

  • Rendering a Full XML Document

An XML document in DOM representation is rendered using an XML renderer, created as follows using the iXML factory:

DATA(ixml) = cl_ixml=>create( ).

...

DATA(renderer) = ixml->create_renderer(

               ostream        = ... 
               document       = ... ). 



                        


                                     


                  
                   


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值