2017-10-23 1 views
1

OpenEdge 10.2A을 사용하고 있습니다.진도 -4gl의 임시 테이블로 XML 파일 읽기

내 XML 파일은 하나의 TABLE_NAME 기록을 가지고 있으며 많은 분야가 있지만 단순화 된 버전은 다음과 같습니다

DEFINE TEMP-TABLE Table_Name NO-UNDO 
    FIELD Field_Name_1 AS CHAR 
    FIELD Field_Name_2 AS CHAR 
. 

TEMP-TABLE Table_Name:READ-XML("File","C:\myFile.xml","empty",?,?,?,?). 

DEF VAR i AS INT NO-UNDO. 
FOR EACH Table_Name: 
    i=i + 1. 
END. 
DISP i. 

:

그것을 읽기 위해서는
<Table_Name> 
    <Field_Name_1>Value_1</Field_Name_1> 
    <Field_Name_2>Value_2</Field_Name_2> 
</Table_Name> 

, 내가 코드를 사용 결과적으로 (0)을 표시합니다. 즉, 파일의 XML 레코드를 읽지 않습니다. 다음과 같이 내가 XML 파일을 변경하는 경우

:

<My_XML_Records> 
     <Table_Name> 
      <Field_Name_1>Value_1</Field_Name_1> 
      <Field_Name_2>Value_2</Field_Name_2> 
     </Table_Name> 
</My_XML_Records> 

XML 파일이 다른 프로그램에 의해 생산되고 형식이 고정되어 있기 때문에 동일한 코드가 1 (일)

를 표시있다 XML 파일을 올바르게 읽도록 코드를 작성하는 방법? https://knowledgebase.progress.com/articles/Article/How-to-read-an-XML-in-a-temp-table-using-READ-XML

해결 방법 :

이 알려진 버그 것 같다
+0

어떤 버전을 사용하고 있습니까? 0 레코드를 얻는 코드는 나를 위해 작동합니다. 틀린 다른 것이 있을까요? – Jensd

+0

매우 이상한 우리 버전은 OpenEdge 10.2A 빌드 1185입니다. 프로 시저 편집기를 사용하여 프로 시저를 실행하고 코드를 변경하지 않고 My_XML_Records 태그를 추가하면 원하는 출력이 제공됩니다. 어떤 버전을 사용합니까? – aza

+0

11.7 정말 많이 ... 더 고정 된 것일 수도 있습니다 – Jensd

답변

1

, 나는 그것을 위해 기술 자료 항목을 발견하여 XML에서, 당신은 데이터 세트 이름의 외부 노드를 필요로하기 위하여려고하고있다. 이렇게 :

<dataset_name> 
    <Table_Name> 
     <Field_Name_1>Value_1</Field_Name_1> 
     <Field_Name_2>Value_2</Field_Name_2> 
    </Table_Name> 
</dataset_name> 

그런 다음 임시 테이블에 대한 데이터 집합을 정의하십시오. 코드는 다음과 같습니다.

DEFINE TEMP-TABLE Table_Name 
    FIELD Field_Name_1 AS CHAR 
    FIELD Field_Name_2 AS CHAR 
. 

define dataset dataset_name for table_name. 

dataset dataset_name:read-xml("File","C:\myFile.xml","empty",?,?,?). 
DEF VAR i AS INT NO-UNDO. 
FOR EACH Table_Name: 
    i=i + 1. 
    DISP Field_Name_1 format "x(20)" 
     Field_Name_2 format "x(20)". 
END. 
DISP i. 

로드 된 데이터 세트가 있습니다.

+1

알려진 버그이므로 빠른 답장을 보내 주셔서 감사합니다. xml 파일을 읽고 구조를 변경하고 다시로드해야합니다. . 귀하의 도움이 풍부 해졌습니다. 다시 한번 감사드립니다. – aza