2014-01-30 34 views
1

XML文件是這樣讀取XML文件數據集進展-4GL

<A_VERY_VERY_LONG_TITLE xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/"> 
    <DATA_LIST> 
     <DATA_LIST>   
      <ELEMENT_NO1 xmlns="">ABCDEFG_1</ELEMENT_NO1> 
      <ELEMENT_NO2 xmlns="">1234567_1</ELEMENT_NO2> 
      <ELEMENT_NO3 xmlns=""/>   
     </DATA_LIST> 
     <DATA_LIST> 
      <ELEMENT_NO1 xmlns="">ABCDEFG_2</ELEMENT_NO1> 
      <ELEMENT_NO2 xmlns="">1234567_2</ELEMENT_NO2> 
      <ELEMENT_NO3 xmlns="">A1B2C3D_2</ELEMENT_NO3>  
     </DATA_LIST> 
     <DATA_LIST> 
      <ELEMENT_NO1 xmlns="">ABCDEFG_3</ELEMENT_NO1> 
      <ELEMENT_NO2 xmlns="">1234567_3</ELEMENT_NO2> 
      <ELEMENT_NO3 xmlns="">A1B2C3D_3</ELEMENT_NO3>  
     </DATA_LIST> 
    </DATA_LIST> 
    <SOMETHING>SOME-VALUE</SOMETHING> 
    <SOMETHING_ELSE>SOME-OTHER-VALUE</SOMETHING_ELSE> 
</A_VERY_VERY_LONG_TITLE> 

而且我代碼示例

DEFINE VARIABLE lOK  AS LOGICAL NO-UNDO. 

DEFINE TEMP-TABLE DATA_LIST NO-UNDO 
    FIELD ELEMENT_NO1   AS CHARACTER 
    FIELD ELEMENT_NO2   AS CHARACTER 
    FIELD ELEMENT_NO3   AS CHARACTER . 

DEFINE DATASET DATA FOR DATA_LIST. 

lOk = DATASET DATA:READ-XML("file",    /* SourceType    */ 
          "C:\xmlFile.xml",  /* File     */ 
          "append",    /* ReadMode    */ 
          ?,      /* SchemaLocation   */ 
          ?,      /* OverrideDefaultMapping */ 
          ?,      /* FieldTypeMapping  */ 
          ?).     /* VerifySchemaMode  */ 

FOR EACH DATA_LIST: 
    DISPLAY DATA_LIST.ELEMENT_NO1 FORMAT "x(20)" 
      DATA_LIST.ELEMENT_NO2 FORMAT "x(20)" 
      DATA_LIST.ELEMENT_NO3 FORMAT "x(20)" 
    WITH WIDTH 120 . 

END. 

我可以成功地訪問DATA_LIST元素。但我無法到達數據「SOMETHING」「SOMETHING_ELSE」。我試着爲這個值定義一個臨時表,但它不能工作。 (我得到一個空屏幕。)

感謝您的幫助。

+0

XML總是需要一個根元素。這是XML規範的一部分。所以你需要一個包含所有內容的標籤。如果不存在,則xml文檔格式不正確。如果它在那裏:發佈整個文檔! – Jensd

+0

感謝您的幫助。是不是「A_VERY_VERY_LONG_TITLE」包含了所有內容? (我已經做了一個更正,現在已經有了一個貼子標籤。) – pikk

+0

看起來更正確! – Jensd

回答

2

Data_List表的定義之外的東西和其他東西。試試這個:

DEFINE VARIABLE lOK  AS LOGICAL NO-UNDO. 

DEFINE TEMP-TABLE DATA_LIST NO-UNDO 
    FIELD ELEMENT_NO1   AS CHARACTER 
    FIELD ELEMENT_NO2   AS CHARACTER 
    FIELD ELEMENT_NO3   AS CHARACTER . 

Define Temp-Table A_VERY_VERY_LONG_TITLE no-undo 
    field SOMETHING as character 
    field SOMETHING_ELSE as character. 

DEFINE DATASET DATA FOR DATA_LIST, A_VERY_VERY_LONG_TITLE. 

lOk = DATASET DATA:READ-XML("file",    /* SourceType    */ 
          "C:\xmlFile.xml",  /* File     */ 
          "append",    /* ReadMode    */ 
          ?,      /* SchemaLocation   */ 
          ?,      /* OverrideDefaultMapping */ 
          ?,      /* FieldTypeMapping  */ 
          ?).     /* VerifySchemaMode  */ 

FOR EACH DATA_LIST: 
    DISPLAY DATA_LIST.ELEMENT_NO1 FORMAT "x(20)" 
      DATA_LIST.ELEMENT_NO2 FORMAT "x(20)" 
      DATA_LIST.ELEMENT_NO3 FORMAT "x(20)" 
    WITH WIDTH 120 . 
END. 
For EACH A_VERY_VERY_LONG_TITLE: 
    DISPLAY A_VERY_VERY_LONG_TITLE.SOMETHING format "x(40)" 
      A_VERY_VERY_LONG_TITLE.SOMETHING_ELSE format "x(40)" 
    WITH WIDTH 220. 
END. 

它爲我:)

+0

它也爲我工作,謝謝:) – pikk

+0

很高興成爲幫助:) – JTMon