0

我是 BeanIO 的新手。我在处理下面的输入 xml 文件时遇到问题,因为它在 TrackAndTrace 属性中包含 &:

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

我的 beanio xml 如下所示:

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

处理文件的代码如下:

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

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

如果在输入 xml 文件中 & 被 url 编码值 %26 替换,则相同的代码可以正常工作。请让我知道如何在 beanio 的情况下进行 URL 编码。

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

我尝试的代码如下,但没有帮助:

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

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

0 回答 0