繁体   English   中英

BeanIO在XML文件中生成标头字段

[英]Generating Header fields in XML file by BeanIO

我正在尝试生成以下XML文件,该文件具有2个字段作为Header和Repeating section“ rec”节点:

<?xml version="1.0" encoding="UTF-8"?>

<transaction>

<createDate>20160708</createDate>
<dlrCode>100<dlrCode/>

<rec>
    <processDate>20190108</processDate>
    <srcID/>10<srcID/>
</rec>
<rec>
    <processDate>20190108</processDate>
    <srcID/>11<srcID/>
</rec>
<rec>
    <processDate>20190108</processDate>
    <srcID/>12<srcID/>
</rec>

</transaction>

这是我创建的映射文件:

<?xml version="1.0" encoding="UTF-8"?>
<beanio xmlns="http://www.beanio.org/2012/03"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.beanio.org/2012/03 http://www.beanio.org/2012/03/mapping.xsd">

 <stream name="dist" format="xml" xmlName="transaction" >
     <record name="HeaderRecord" class="com.myPackage.HeaderRecord" minOccurs="1" maxOccurs="1" order="1" > 
        <field name="createDate" format="yyyyMMdd" />
        <field name="dlrCode" />
    </record>
    <record name="DisRecord" class="com.myPackage.Record" minOccurs="0" maxOccurs="unbounded" xmlName="rec" order="2">
        <field name="processDate" format="yyyyMMdd"/>
        <field name="srcID"/> 
    </record>
 </stream>
</beanio>

但是问题是,它会在HeaderRecord节点内生成头字段,如下所示:

<?xml version="1.0" encoding="UTF-8"?>

<transaction>

<HeaderRecord>
     <createDate>20160708</createDate>
     <dlrCode>100<dlrCode/>
</HeaderRecord>

<rec>
    <processDate>20190108</processDate>
    <srcID/>10<srcID/>
</rec>
<rec>
    <processDate>20190108</processDate>
    <srcID/>11<srcID/>
</rec>
<rec>
    <processDate>20190108</processDate>
    <srcID/>12<srcID/>
</rec>
</transaction>

映射文件中是否配置错误? 如何达到期望的输出?

通过使用xmlType="none"属性,您可以控制是否应生成xml元素。 当您未指定xmlName属性时,默认情况下xmlName等于记录名称,请参见此处 一条记录将始终映射到一个xml元素,并且通过使用segments ,您可能能够获得所需的输出。

试试这个映射文件:

<stream name="dist" format="xml" xmlType="none" >
  <record name="HeaderRecord" class="com.mypackage.HeaderRecord" minOccurs="1" maxOccurs="1" xmlName="transaction">
    <segment name="dummy" xmlType="none">
      <field name="createDate" format="yyyyMMdd" />
      <field name="dlrCode" />
    </segment>
  </record>

我认为这并不是您要找的100%。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM