Question

I have a Metro web service client that is throwing a com.ctc.wstx.exc.WstxParsingException.

If I am reading it correctly, it's saying that "3" is an invalid XML character. Is that correct? What is an "expansion character" and why would "3" be invalid?

Full stack trace:

Exception in thread "main" com.sun.xml.ws.encoding.soap.DeserializationException: Failed to read a response: javax.xml.bind.UnmarshalException
- with linked exception:
[com.ctc.wstx.exc.WstxParsingException: Illegal character entity: expansion character (code 0x3) not a valid XML character
at [row,col {unknown-source}]: [2,4154]]
        at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:124)
        at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:89)
        at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:140)
        at $Proxy34.getSubInfoByRel(Unknown Source)
        at com.my.company.client.SOAPClient.getSubscriberInfoByTN(SOAPClient.java:237)
Caused by: javax.xml.bind.UnmarshalException
- with linked exception:
[com.ctc.wstx.exc.WstxParsingException: Illegal character entity: expansion character (code 0x3) not a valid XML character
at [row,col {unknown-source}]: [2,4154]]
        at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:426)
        at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:362)
        at com.sun.xml.bind.v2.runtime.BridgeImpl.unmarshal(BridgeImpl.java:120)
        at com.sun.xml.bind.api.Bridge.unmarshal(Bridge.java:233)
        at com.sun.xml.ws.client.sei.ResponseBuilder$DocLit.readResponse(ResponseBuilder.java:547)
        at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:121)
        ... 5 more
Caused by: com.ctc.wstx.exc.WstxParsingException: Illegal character entity: expansion character (code 0x3) not a valid XML character
at [row,col {unknown-source}]: [2,4154]
        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.resolveCharEnt(StreamScanner.java:2277)
        at com.ctc.wstx.sr.StreamScanner.fullyResolveEntity(StreamScanner.java:1468)
        at com.ctc.wstx.sr.BasicStreamReader.nextFromTree(BasicStreamReader.java:2755)
        at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1019)
        at com.sun.xml.ws.util.xml.XMLStreamReaderFilter.next(XMLStreamReaderFilter.java:92)
        at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:192)
        at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:360)
        ... 9 more
Était-ce utile?

La solution

The issue was that (code 0x3) is a Unicode code point and as such an illegal XML character. The owners of the data have been informed. Thanks to Josh from the Woostox mailing list for the help.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top