JAXWS SOAPHandler用于过滤掉无效的xml字符

时间:2015-06-24 12:37:48

标签: java jax-ws

我有一个web服务,在客户端传递带有一些无效xml字符的字符串。在服务器端解析请求时,JAXWS会抛出异常,因为它无法解析无效的xml字符。

为了解决这个问题,我尝试创建以下SOAPHandler。在下面的SOAPHandler中,我尝试迭代子元素,这意味着我已经在解析xml,因此在处理程序本身中获得异常。

如何从邮件中删除无效的xml字符?

Spinner

1 个答案:

答案 0 :(得分:0)

您需要做的就是更改XML而不解析它,正如您已经想到的那样。这不一定是一个简单的问题,但至少更通用。

首先将您的消息作为裸字符串:

ByteArray OutputStream out = new ByteArrayOutputStream();
soapMsg.writeTo(out);
String messageAsString = new String(out.toByteArray());

然后在字符串上使用stripNonValidXMLCharacters,并将结果用作SOAPMessageContext::setMessage的输入,在您的情况下似乎是context.setMessage(...)

另外,请查看这些有关调整无效XML的更漂亮方法:removing invalid XML characters from a string in javaParsing malformed/incomplete/invalid XML files