2017-10-23 3 views
1

私はOpenEdge 10.2Aを使用しています。進行中のテンポラリテーブルにXMLファイルを読み込む-12gl

私のXMLファイルは一つだけTABLE_NAME記録を持っており、それが多くの分野がありますが、単純化されたバージョンである:それを読むためには

<Table_Name> 
    <Field_Name_1>Value_1</Field_Name_1> 
    <Field_Name_2>Value_2</Field_Name_2> 
</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. 

結果として、(ゼロ)が表示されます。つまり、ファイル内のXMLレコードは読み取られません。

次のように私は私の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> 

を同じコードが(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

関連する問題