首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Openedge ABL -写XML

Openedge ABL -写XML
EN

Stack Overflow用户
提问于 2022-10-12 19:07:13
回答 1查看 53关注 0票数 1

是否有可能在Openedge ABL的过程中做到这一点?我已经有了公司= A的代码。

dataset dsOut:写-xml(“FILE”,dTempXmlFile,true,"UTF-8")。

如果Company =A,则这是xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
  <LoadNotification>
    <LoadID>10167</LoadID>
    <ShipmentTransferNumber>2320373</ShipmentTransferNumber>
  </LoadNotification>

否则,如果Company =B,则这是xml (注意出现了一个额外的节点)

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
  <LoadNotification>
    <LoadID>10167</LoadID>
    <RetailID>AMZN</RetailID>
    <ShipmentTransferNumber>2320373</ShipmentTransferNumber>
  </LoadNotification>

我想避免A公司的自闭标签。我不想在A公司向<RetailID/>展示

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
  <LoadNotification>
    <LoadID>10167</LoadID>
    <RetailID/>
    <ShipmentTransferNumber>2320373</ShipmentTransferNumber>
  </LoadNotification>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-12 20:27:45

写xml方法有第九个参数omit-initial-values。如果您能够确保您的RetailID在公司为A时匹配初始值(或重置它),那么它将在输出中被跳过。

代码语言:javascript
复制
define temp-table tt
    field ii as int
    field cc as char initial ?
    .
define dataset ds for tt.
def var lcxml as longchar.

create tt. assign tt.ii = 1 tt.cc = 'one'.
create tt. assign tt.ii = 2. // no cc

dataset ds:write-xml( 'longchar', lcxml, true, 'utf-8', ?, ?, ?, ?, true ).

message string( lcxml ).

看着它在ABL Dojo上运行,否则在这里输出:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<ds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <tt>
    <ii>1</ii>
    <cc>one</cc>
  </tt>
  <tt>
    <ii>2</ii>
  </tt>
</ds>
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74046906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档