忽略Spring Batch CharacterEscapeHandler属性

忽略Spring Batch CharacterEscapeHandler属性,spring,escaping,spring-batch,jaxb2,Spring,Escaping,Spring Batch,Jaxb2,与JAXB2Marshaller一起使用时,Spring批处理StatxevenitemWriter似乎无法识别所设置的Marshaller属性。有没有人有在SpringBatch中使用CharacterEscapeHandler的经验 我需要JAXB忽略转义特殊字符,如“<;”和“>;”请忽略空格,我确实重写了我的JAXB2Marshaller的“initJaxbMarshaller”,如下所示,但它似乎无法识别 @Override protected void initJax

与JAXB2Marshaller一起使用时,Spring批处理StatxevenitemWriter似乎无法识别所设置的Marshaller属性。有没有人有在SpringBatch中使用CharacterEscapeHandler的经验

我需要JAXB忽略转义特殊字符,如“<;”和“>;”请忽略空格,我确实重写了我的JAXB2Marshaller的“initJaxbMarshaller”,如下所示,但它似乎无法识别

@Override
    protected void initJaxbMarshaller(Marshaller marshaller)throws JAXBException{
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
        marshaller.setProperty(CharacterEscapeHandler.class.getName(),  new CharacterEscapeHandler() {
            @Override
            public void escape(char[] buf, int start, int length,
                    boolean isAttVal, Writer out)
                    throws IOException {
                for (int i = start; i < start + length; i++) {
                    char ch = buf[i];
                    log.debug(ch);
                    out.write(ch);
                }
                //log.debug("Just flushing char --> "+ch.toString());
                //writer.write(ch, start, length);
            }
        });
    }
用于处理CDATA的CDATA适配器类

public class CdataAdapter extends XmlAdapter<String, String>{

    @Override
        public String marshal(String v) throws Exception {
            return "<![CDATA[" + v + "]]>";
        }

        @Override
        public String unmarshal(String v) throws Exception {
            return v;
        }
    }
JAXB2Marshaller-Spring-config

<bean id="userXMLMarshaller" class="org.test.model.xml.marshallers.CustomJAXB2XMLMarshaller">
   <property name="classesToBeBound">
    <list>
        <value>org.test.xml.User</value>
    </list>
    </property>
  </bean>
实际XML输出

<?xml version="1.0" encoding="ISO-8859-1"?>
<LOAD FORMAT="XMLFormat" OVERRIDE="true">
  <USER ID="someId">
    <NAME>userName</NAME>
    <COMPANY>&lt;![CDATA[companyName]]&gt;</COMPANY>
  </USER>
  .....
<LOAD>
另外,Spring批处理中似乎已经存在一个错误,它不打算正确地输出XML,并且有修复程序;链接-


你会认为《逃逸汉德勒》这个角色也是这样吗?非常感谢您的建议。

您可以发布您的文件和jaxb映射对象的示例吗?Luca,根据要求对我的文章进行了编辑。。抱歉,尝试了几次后无法提供帮助。也许米内拉或其他人可以就这个问题提供建议/解决方案。我感谢你花时间尝试卢卡。哈里什,我也面临同样的问题。你解决了这个问题吗?
<bean id="userXMLMarshaller" class="org.test.model.xml.marshallers.CustomJAXB2XMLMarshaller">
   <property name="classesToBeBound">
    <list>
        <value>org.test.xml.User</value>
    </list>
    </property>
  </bean>
<?xml version="1.0" encoding="ISO-8859-1"?>
<LOAD FORMAT="XMLFormat" OVERRIDE="true">
  <USER ID="someId">
    <NAME>userName</NAME>
    <COMPANY>&lt;![CDATA[companyName]]&gt;</COMPANY>
  </USER>
  .....
<LOAD>