如何将文件导出为XML格式?

问题描述 投票:-2回答:1
FOR EACH gdmf_shift NO-LOCK:BUFFER-COPY gdmf_shift EXCEPT shift_obj TO tt_shift.END.
 hOutSAXDocument:START-ELEMENT("Row").
    hOutSAXDocument:INSERT-ATTRIBUTE("id","5").   
         hOutSAXDocument:START-ELEMENT("Column").
         hOutSAXDocument:INSERT-ATTRIBUTE("id","C1").  
         hOutSAXDocument:WRITE-DATA-ELEMENT("Column",string(tt_orderinfo.shft_start_hour,"HH:MM")).
         hOutSAXDocument:WRITE-DATA-ELEMENT("Column",string(tt_orderinfo.shft_stop_hour,"HH:MM")).

从上面的代码中看到,我得到了第一个开始和结束时间,并以XML格式导出,但是我需要的是每小时驻留在tt_data中。See Like this

openedge progress-4gl
1个回答
0
投票

在我看来,您的END语句在错误的位置。

FOR EACH gdmf_shift NO-LOCK:

 BUFFER-COPY gdmf_shift EXCEPT shift_obj TO tt_shift.  /* I don't see why you are doing this but maybe there is more code than is being shown */

 hOutSAXDocument:START-ELEMENT("Row").
 hOutSAXDocument:INSERT-ATTRIBUTE("id","5").   
 hOutSAXDocument:START-ELEMENT("Column").
 hOutSAXDocument:INSERT-ATTRIBUTE("id","C1").  
 hOutSAXDocument:WRITE-DATA-ELEMENT("Column",string(tt_orderinfo.shft_start_hour,"HH:MM")).
 hOutSAXDocument:WRITE-DATA-ELEMENT("Column",string(tt_orderinfo.shft_stop_hour,"HH:MM")).

  /* you  probably want to end the element here */

END.

似乎您可能认为Progress 4GL / ABL有点像SQL,其中返回了“结果集”并作为整体起作用。 4GL不是那样的。 FOR EACH是一个循环块-每行分别返回以供您执行。尽管从表面上看相似,但它与SQL SELECT不同。

您的原始代码仅作用于最后一行,因为它恰好位于“ FOR EACH x WHERE y:... END”末尾的“范围内”。阻止。

© www.soinside.com 2019 - 2024. All rights reserved.