Apache Wink可以忽略不可打印的xml字符吗?

时间:2013-01-07 14:11:04

标签: xml jaxb control-characters apache-wink

我的应用程序支持使用Wink和JDK(1.6)内置的JAXB提供程序的REST API。 有时我收到包含控制字符的PUT请求。

就我的应用而言,控制字符构成了有效且有意义的输入。 但是,该应用程序抛出臭名昭着的异常,说它无法消化这些字符:

Message: An invalid XML character (Unicode: 0x13) was found in the element content of the document.]
at org.apache.wink.common.internal.providers.entity.xml.JAXBXmlProvider.readFrom(JAXBXmlProvider.java:107)
at org.apache.wink.server.internal.registry.ServerInjectableFactory$EntityParam.getValue(ServerInjectableFactory.java:190)
at org.apache.wink.common.internal.registry.InjectableFactory.instantiate(InjectableFactory.java:67)
at org.apache.wink.server.internal.handlers.CreateInvocationParametersHandler.handleRequest

可能无法告诉JAXB提供程序忽略这些字符(因为在某些时候我将不得不解析Xml,非法是非法的......)。 我怎样才能做到这一点?有没有办法在发送之前指示Rest客户端转义这些字符?

2 个答案:

答案 0 :(得分:2)

控制字符为not allowed in XML,因此您的数据不是XML。除了Y 之外,的问题就像X一样,很难定义一个API,其中Y可以是个人认为应该是的。 JAXB不太可能适应您。如果可以接受,您可以使用过滤器去除非法字符;否则,您必须编码或转义合法字符数据中的数据(例如,使用Base64。)

答案 1 :(得分:2)

有问题的字符不是“不可打印的XML字符”。它们是不可打印的非XML字符。