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
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.

answered