Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7188876
  • 博文数量: 655
  • 博客积分: 10264
  • 博客等级: 上将
  • 技术积分: 8278
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-04 17:47
个人简介

ABAP顾问

文章分类

全部博文(655)

文章存档

2017年(2)

2014年(8)

2013年(3)

2012年(2)

2011年(18)

2010年(102)

2009年(137)

2008年(274)

2007年(134)

分类:

2009-07-06 20:37:41

REPORT z_barry_xml_up NO STANDARD PAGE HEADING.

TYPE-POOLS: ixml.
DATA: pixml          TYPE REF TO if_ixml,
      pdocument      TYPE REF TO if_ixml_document,
      pstreamfactory TYPE REF TO if_ixml_stream_factory,
      pistream       TYPE REF TO if_ixml_istream,
      pparser        TYPE REF TO if_ixml_parser,
      pnode          TYPE REF TO if_ixml_node,
      string         TYPE string,
      count          TYPE i,
      index          TYPE i,
      totalsize      TYPE i .
TYPES: BEGIN OF xml_line,
        data(256) TYPE x,
      END OF xml_line.
DATA: xml_table TYPE TABLE OF xml_line.

START-OF-SELECTION.

  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename   = 'c:\46c.xml'
      filetype   = 'BIN'
    IMPORTING
      filelength = totalsize
    TABLES
      data_tab   = xml_table
    EXCEPTIONS
      OTHERS     = 11.
  IF sy-subrc <> 0.
    EXIT.
  ENDIF.

  pixml = cl_ixml=>create( ).
  pdocument = pixml->create_document( ).
  pstreamfactory = pixml->create_stream_factory( ).
  pistream = pstreamfactory->create_istream_itable( table = xml_table
                                                    size  = totalsize ).
  pparser = pixml->create_parser( stream_factory = pstreamfactory
                                  istream        = pistream
                                  document       = pdocument ).

  IF pparser->parse( ) NE 0.
    IF pparser->num_errors( ) NE 0.
      count = pparser->num_errors( ).
      WRITE: count, ' parse errors have occured:'.
      DATA: pparseerror TYPE REF TO if_ixml_parse_error,
            i TYPE i.
      index = 0.
      WHILE index < count.
        pparseerror = pparser->get_error( index = index ).
        i = pparseerror->get_line( ).
        WRITE: 'line: ', i.
        i = pparseerror->get_column( ).
        WRITE: 'column: ', i.
        string = pparseerror->get_reason( ).
        WRITE: string.
        index = index + 1.
      ENDWHILE.
    ENDIF.
  ENDIF.

  CALL METHOD pistream->close( ).
  CLEAR pistream.

  pnode = pdocument.
  PERFORM print_node USING pnode.

阅读(6418) | 评论(6) | 转发(0) |
0

上一篇:单身日记

下一篇:获取本地打印机信息

给主人留下些什么吧!~~

clmdtb2014-06-27 17:31:54

FORM printnodeinfo USING nodetype TYPE string deep TYPE i node TYPE REF TO if_ixml_node.
  DATA: name TYPE string,
        value TYPE string,
        spaces TYPE string.
  DO deep TIMES.
    spaces = spaces && ` `.
  ENDDO.
  name = node->get_name( ).
 &

clmdtb2014-06-27 17:31:24

FORM printnodeinfo USING nodetype TYPE string deep TYPE i node TYPE REF TO if_ixml_node.
  DATA: name TYPE string,
        value TYPE string,
        spaces TYPE string.
  DO deep TIMES.
    spaces = spaces && ` `.
  ENDDO.
  name = node->get_name( ).
 &

clmdtb2014-06-27 17:29:56

DATA: childs TYPE REF TO if_ixml_node_list,
        child TYPE REF TO if_ixml_node,
        childslen TYPE i.
  childs = p_pnode->get_children( ).
  childslen =  childs->get_length( ).
  DATA: deep2 TYPE i.
  deep2 =  deep + 1.
  DO childslen  TIMES.
    chil

clmdtb2014-06-27 17:29:29

PERFORM print_node USING pnode 0.

FORM print_node  USING p_pnode TYPE REF TO if_ixml_node deep TYPE i.
  DATA: nodetype TYPE i,
        attrslen TYPE i,
        attrs TYPE REF TO if_ixml_named_node_map,
        attr TYPE REF TO if_ixml_node.
  nodetype = p_pnode->get_typ

chinaunix网友2011-06-14 16:57:59

怎么每次都喜欢把关键的东西藏起来