Illegal character entity: expansion character (code 0x8) not a valid XML character
0
We run an app that has a published webservice thats called by a service bus. We received a message that contained the following code in a string:  this translates to: UTF-8 (hex)0x08 (08) (A control character http://www.fileformat.info/info/unicode/char/0008/index.htm) This returns the following error: Exception occurred while processing webservice request -------- com.mendix.integration.WebserviceException: Internal server error at com.mendix.integration.webservices.publish.handling.WebServiceCallBodyProcessor.executeMicroflow(WebServiceCallBodyProcessor.scala:98) at com.mendix.integration.webservices.publish.handling.WebServiceActionMonitor$$anonfun$run$1.apply$mcV$sp(WebServiceActionMonitor.scala:18) at com.mendix.integration.webservices.publish.handling.WebServiceActionMonitor$$anonfun$run$1.apply(WebServiceActionMonitor.scala:16) at com.mendix.integration.webservices.publish.handling.WebServiceActionMonitor$$anonfun$run$1.apply(WebServiceActionMonitor.scala:16) at com.mendix.core.session.Worker$$anonfun$receive$3$$anonfun$2$$anon$1.execute(ActionDispatching.scala:143) at com.mendix.util.classloading.Runner.doRunUsingClassLoaderOf(Runner.java:36) at com.mendix.core.session.Worker$$anonfun$receive$3$$anonfun$2.apply(ActionDispatching.scala:145) at scala.util.Try$.apply(Try.scala:192) at com.mendix.core.session.Worker$$anonfun$receive$3.applyOrElse(ActionDispatching.scala:139) at akka.actor.Actor$class.aroundReceive(Actor.scala:465) at com.mendix.core.session.Worker.aroundReceive(ActionDispatching.scala:135) at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516) at akka.actor.ActorCell.invoke(ActorCell.scala:487) at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238) at akka.dispatch.Mailbox.run(Mailbox.scala:220) at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393) at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) Caused by: com.ctc.wstx.exc.WstxLazyException: [com.ctc.wstx.exc.WstxLazyException] Illegal character entity: expansion character (code 0x8) not a valid XML character at [row,col {unknown-source}]: [533,73] at com.ctc.wstx.exc.WstxLazyException.throwLazily(WstxLazyException.java:45) at com.ctc.wstx.sr.StreamScanner.throwLazyError(StreamScanner.java:704) at com.ctc.wstx.sr.BasicStreamReader.safeFinishToken(BasicStreamReader.java:3657) at com.ctc.wstx.sr.BasicStreamReader.getText(BasicStreamReader.java:809) at org.apache.axiom.om.impl.builder.StAXBuilder.createOMText(StAXBuilder.java:285) at org.apache.axiom.om.impl.builder.StAXBuilder.createOMText(StAXBuilder.java:246) at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:252) at org.apache.axiom.om.impl.llom.OMElementImpl.buildNext(OMElementImpl.java:709) at org.apache.axiom.om.impl.llom.OMElementImpl.getFirstOMChild(OMElementImpl.java:724) at org.apache.axiom.om.impl.llom.OMElementImpl.getChildren(OMElementImpl.java:373) at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:554) at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:846) at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:556) at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:846) at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:556) at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:846) at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:556) at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:846) at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:556) at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:846) at org.apache.axiom.om.impl.llom.OMSerializableImpl.serialize(OMSerializableImpl.java:120) at org.apache.axiom.om.impl.llom.OMSerializableImpl.serialize(OMSerializableImpl.java:108) at org.apache.axiom.om.impl.llom.OMElementImpl.toString(OMElementImpl.java:957) at com.mendix.integration.webservices.publish.handling.WebServiceCallBodyProcessor.executeMicroflow(WebServiceCallBodyProcessor.scala:68) at com.mendix.integration.webservices.publish.handling.WebServiceActionMonitor$$anonfun$run$1.apply$mcV$sp(WebServiceActionMonitor.scala:18) at com.mendix.integration.webservices.publish.handling.WebServiceActionMonitor$$anonfun$run$1.apply(WebServiceActionMonitor.scala:16) at com.mendix.integration.webservices.publish.handling.WebServiceActionMonitor$$anonfun$run$1.apply(WebServiceActionMonitor.scala:16) at com.mendix.core.session.Worker$$anonfun$receive$3$$anonfun$2$$anon$1.execute(ActionDispatching.scala:143) at com.mendix.util.classloading.Runner.doRunUsingClassLoaderOf(Runner.java:36) at com.mendix.core.session.Worker$$anonfun$receive$3$$anonfun$2.apply(ActionDispatching.scala:145) at scala.util.Try$.apply(Try.scala:192) at com.mendix.core.session.Worker$$anonfun$receive$3.applyOrElse(ActionDispatching.scala:139) at akka.actor.Actor$class.aroundReceive(Actor.scala:465) at com.mendix.core.session.Worker.aroundReceive(ActionDispatching.scala:135) at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516) at akka.actor.ActorCell.invoke(ActorCell.scala:487) at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238) at akka.dispatch.Mailbox.run(Mailbox.scala:220) at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393) at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) Caused by: com.ctc.wstx.exc.WstxParsingException: Illegal character entity: expansion character (code 0x8) not a valid XML character at [row,col {unknown-source}]: [533,73] at com.ctc.wstx.sr.StreamScanner.constructWfcException(StreamScanner.java:605) at com.ctc.wstx.sr.StreamScanner.throwParseError(StreamScanner.java:461) at com.ctc.wstx.sr.StreamScanner.reportIllegalChar(StreamScanner.java:2375) at com.ctc.wstx.sr.StreamScanner.checkAndExpandChar(StreamScanner.java:2321) at com.ctc.wstx.sr.StreamScanner.resolveSimpleEntity(StreamScanner.java:1180) at com.ctc.wstx.sr.BasicStreamReader.readTextSecondary(BasicStreamReader.java:4675) at com.ctc.wstx.sr.BasicStreamReader.readCoalescedText(BasicStreamReader.java:4124) at com.ctc.wstx.sr.BasicStreamReader.finishToken(BasicStreamReader.java:3699) at com.ctc.wstx.sr.BasicStreamReader.safeFinishToken(BasicStreamReader.java:3647) at com.ctc.wstx.sr.BasicStreamReader.getText(BasicStreamReader.java:809) at org.apache.axiom.om.impl.builder.StAXBuilder.createOMText(StAXBuilder.java:285) at org.apache.axiom.om.impl.builder.StAXBuilder.createOMText(StAXBuilder.java:246) at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:252) at org.apache.axiom.om.impl.llom.OMElementImpl.buildNext(OMElementImpl.java:709) at org.apache.axiom.om.impl.llom.OMElementImpl.getFirstOMChild(OMElementImpl.java:724) at org.apache.axiom.om.impl.llom.OMElementImpl.getChildren(OMElementImpl.java:373) at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:554) at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:846) at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:556) at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:846) at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:556) at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:846) at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:556) at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:846) at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:556) at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:846) at org.apache.axiom.om.impl.llom.OMSerializableImpl.serialize(OMSerializableImpl.java:120) at org.apache.axiom.om.impl.llom.OMSerializableImpl.serialize(OMSerializableImpl.java:108) at org.apache.axiom.om.impl.llom.OMElementImpl.toString(OMElementImpl.java:957) at com.mendix.integration.webservices.publish.handling.WebServiceCallBodyProcessor.executeMicroflow(WebServiceCallBodyProcessor.scala:68) at com.mendix.integration.webservices.publish.handling.WebServiceActionMonitor$$anonfun$run$1.apply$mcV$sp(WebServiceActionMonitor.scala:18) at com.mendix.integration.webservices.publish.handling.WebServiceActionMonitor$$anonfun$run$1.apply(WebServiceActionMonitor.scala:16) at com.mendix.integration.webservices.publish.handling.WebServiceActionMonitor$$anonfun$run$1.apply(WebServiceActionMonitor.scala:16) at com.mendix.core.session.Worker$$anonfun$receive$3$$anonfun$2$$anon$1.execute(ActionDispatching.scala:143) at com.mendix.util.classloading.Runner.doRunUsingClassLoaderOf(Runner.java:36) at com.mendix.core.session.Worker$$anonfun$receive$3$$anonfun$2.apply(ActionDispatching.scala:145) at scala.util.Try$.apply(Try.scala:192) at com.mendix.core.session.Worker$$anonfun$receive$3.applyOrElse(ActionDispatching.scala:139) at akka.actor.Actor$class.aroundReceive(Actor.scala:465) at com.mendix.core.session.Worker.aroundReceive(ActionDispatching.scala:135) at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516) at akka.actor.ActorCell.invoke(ActorCell.scala:487) at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238) at akka.dispatch.Mailbox.run(Mailbox.scala:220) at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393) at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) The problem is that 0x08 is not accepted by XML 1.0 but the original string should be accepted and in the Modeller I have not yet found a section where I can control encoding and decoding of these entries. Is there any way to mitigate this issue since we will see more of these strings popping up in our webservice?
asked
Freek Brinkhuis
1 answers
1
The Mendix platform uses the Woodstox library to parse XML and there is a setting in Woodstox to replace illegal control characters. I don't think that setting is exposed anywhere in the modeler, but you could ask Mendix Support to add it.
Given the probable turnaround time for a feature request like that, your best bet would be to clean up the XML before it hits your Mendix app.