0

I am new to BeanIO. I am facing issue when processing below input xml file as it contains & in the TrackAndTrace attribute:

<ROOT>
<Sender>
<Provider>
<Data>
<Item SendingID="001111" ItemID="4111111" TrackAndTrace="https://www.xyz.ch/EasySearch.do?fCodes=9946;&lang=fr"/>
</Data>
</Provider>
</Sender>
</ROOT>

My beanio xml looks like below:

<stream name="test" format="xml" xmlName="ROOT">
    <record name="shippingData" xmlName="Sender" class="com.comp.eventr.data.ShipDataDO">
        <segment name="Provider">
            <segment name="Data">
                <segment name="Item">
                    <field name="tNumber" xmlName="IdentCode" xmlType="attribute"></field>
                </segment>
                <segment name="shippingDetail" xmlName="Item" xmlType="element" class="com.comp.eventr.data.ShipDetailDO">
                    <field name="eCode" xmlName="EventNumber" xmlType="attribute"></field>
                    <field name="eDate" xmlName="EventDateTime" xmlType="attribute"></field>
                    <field name="eName" xmlName="EventDescription" xmlType="attribute"></field>
                </segment>
            </segment>
        </segment>
    </record>
</stream>

The code for processing the file is as below:

protected StreamFactory factory;
  protected BeanReader in = factory.createReader(carrier, new InputStreamReader(new FileInputStream(file)));

  while ((shippingDataDO = (ShippingDataDO) in.read()) != null) {
    //some code goes here
  }

If in input xml file & is replaced by url encoded value %26 the same code works fine. Kindly let me know how to URL encode in case of beanio.

<ROOT>
<Sender>
<Provider>
<Data>
<Item SendingID="001111" ItemID="4111111" TrackAndTrace="https://www.xyz.ch/EasySearch.do?fCodes=9946;%26lang=fr"/>
</Data>
</Provider>
</Sender>
</ROOT>

The code i tried is as below, but it did not help:

protected BeanReader in = factory.createReader(carrier, new InputStreamReader(new FileInputStream(file), Charset.forName("UTF-8")));

and

protected BeanReader in = factory.createReader(carrier, new InputStreamReader(new FileInputStream(file), StandardCharsets.ISO_8859_1));
ANITHA
  • 37
  • 7
  • Your input is not valid XML. The `&` must be `&`. –  Aug 21 '19 at 07:28
  • Your XML sample doesn't match your mapping.xml file either, wich make it harder for people to try and reproduce your problem to help. But, firstly, ask the people sending that XML to send valid XML as Lutz has said. – nicoschl Aug 21 '19 at 14:11

0 Answers0