Illegal character code 0xb in attribute value text问题

来源:互联网 发布:域名管理权变更 编辑:程序博客网 时间:2024/05/16 23:36

采用JIBX对象转换成xml时,抛出的异常如下:

Caused by: java.io.IOException: Illegal character code 0xb in attribute value textat org.jibx.runtime.impl.UTF8Escaper.writeAttribute(UTF8Escaper.java:89)at org.jibx.runtime.impl.GenericXMLWriter.writeAttributeText(GenericXMLWriter.java:209)at org.jibx.runtime.impl.XMLWriterBase.addAttribute(XMLWriterBase.java:262)at org.jibx.runtime.impl.MarshallingContext.attribute(MarshallingContext.java:561)... 23 more


其实也就是很简单的编组代码,当然前提是当把对象与XML的应对关系写好

/** * 编组 * @param name * @param clazz * @return * @throws JiBXException */    protected static IMarshallingContext getMarshallContext(final String name, final Class<?> clazz) throws JiBXException {        final IBindingFactory factory = BindingDirectory.getFactory(name, clazz);        final IMarshallingContext marshallingContext = factory.createMarshallingContext();        return marshallingContext;    }    /**     * 输出XML     * @param name binding绑定的name名字<binding name=".." direction="output">     * @param clazz     * @param str 字符串     * @return     * @throws JiBXException     */    protected static String getStringWriter(final Object o,final String name, final Class<?> clazz,final String str) throws JiBXException {    final IMarshallingContext context = getMarshallContext(name,clazz);    synchronized(context) {    final StringWriter wwiter = new StringWriter();    context.marshalDocument(o,str, null, wwiter);    return wwiter.toString();    }    }


把0xb打印了一下

public static void main(String[] args) {System.out.println(Character.valueOf((char)0xb));}


显示如下结果



是一个特殊字符


用正则表达式转换

Pattern p = Pattern.compile("[^\\u0009\\u000A\\u000D\\u0020-\\uD7FF\\uE000-\\uFFFD\\u10000-\\u10FFF]+");      Matcher m = p.matcher(result);      result = m.replaceAll("");



0 0
原创粉丝点击