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));