2012-10-24 29 views
2

首先,讓我道歉,如果我使用錯誤的詞彙,因爲我不太熟悉COBOL。 我們正試圖從COBOL中的固定數據結構生成xml文檔。 這很好,使用GENERATE語句,但我們有一個問題。不要生成空的XML屬性

如果數據如下:

First;Second;Age;Optional 
JOHN;SNOW;18;Something 
JOHN;DOE;45;Nothing 
JOHN;ISSUE;30; 

然後生成的XML看起來是這樣的:

<Persons> 
    <Person First="JOHN" Second="SNOW" Age="18" Optional="Something"/> 
    <Person First="JOHN" Second="DOE" Age="45" Optional="Nothing"/> 
    <Person First="JOHN" Second="ISSUE" Age="18" Optional=""/> 
</Persons> 

當我們想在發電機不創建屬性時,他們有一個空值:

<Persons> 
    <Person First="JOHN" Second="SNOW" Age="18" Optional="Something"/> 
    <Person First="JOHN" Second="DOE" Age="45" Optional="Nothing"/> 
    <Person First="JOHN" Second="ISSUE" Age="18" /> 
</Persons> 

是否有一個簡單的方法來達致這?一直在IBM文檔和谷歌環顧四周,沒有運氣。

+0

看看這個答案:stackoverflow.com/a/2120511/192510。 ODO解決方案會變得相當混亂,有時不可行(取決於個別情況)。請注意,您需要對鏈接中的程序進行「修改」,以使用「屬性」事件標籤代替「內容」事件標籤,因爲您使用的是元素屬性來傳遞內容而不是元素文本。 – NealB

回答

1

對於可選項目,我們已經成功使用OCCURS 0 to 1 DEPENDING var。根據指示詞是否存在,我們將var設置爲0或1。

這是一個kludge。有一個現存的共享requirement,使不必要的kludge;我期望該功能位於v.Next COBOL編譯器中。

0

在我看來,更簡單的方法是使用XML PARSE動詞爲您的架構寫一個漂亮的打印機自定義。執行GENERATE,然後通過漂亮的打印機提供它以應用您的特定規則來生成最終輸出。