1

我的应用程序使用 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 客户端在发送这些字符之前对其进行转义?

4

2 回答 2

2

XML 中不允许使用控制字符,因此您的数据不是 XML。除了 Y 之外,它的问题就像 X 一样,很难定义一个 API,其中 Y 可以是个人认为应该是的任何东西。JAXB 不太可能容纳您。如果可以接受,您可以使用过滤器去除非法字符;否则,您将不得不对合法字符数据中的数据进行编码或转义(例如使用Base64。)

于 2013-01-07T15:10:41.887 回答
2

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

于 2013-01-07T15:45:57.827 回答