Pregunta

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
¿Fue útil?

Solución

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top