我有一个web服务,在客户端传递带有一些无效xml字符的字符串。在服务器端解析请求时,JAXWS会抛出异常,因为它无法解析无效的xml字符。
为了解决这个问题,我尝试创建以下SOAPHandler。在下面的SOAPHandler中,我尝试迭代子元素,这意味着我已经在解析xml,因此在处理程序本身中获得异常。
如何从邮件中删除无效的xml字符?
Spinner
答案 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 java和Parsing malformed/incomplete/invalid XML files。