Java WS-XML序列化在发生JAXB解组之前失败

Java WS-XML序列化在发生JAXB解组之前失败,java,wcf,jaxb,xml-serialization,jax-ws,Java,Wcf,Jaxb,Xml Serialization,Jax Ws,在我的环境中,我让客户机(Java6)使用JAX-WS和basicHttpBinding调用wcf(.NET3.5)wcf服务 我有一些从wcf服务返回的无效xml字符作为字符串值 我添加了自定义JAXB转换器,如 <jaxb:javaType name="java.lang.String" xmlType="xs:string" parseMethod="MyClass.parseStringToSafeXmlString" print

在我的环境中,我让客户机(Java6)使用JAX-WS和basicHttpBinding调用wcf(.NET3.5)wcf服务

我有一些从wcf服务返回的无效xml字符作为字符串值

我添加了自定义JAXB转换器,如

<jaxb:javaType name="java.lang.String" 
        xmlType="xs:string"
        parseMethod="MyClass.parseStringToSafeXmlString" 
        printMethod="MyClassprintStringToSafeXmlString" />
其中
stripNonValidXMLCharacters
-一些删除无效字符的方法(不计算它的性能)

但当我接收到包含无效xml字符的字符串时,我的代码在调用
parseStringToSafeXmlString
之前发生异常(对于有效字符串,调用了方法,我停止了断点)

原因:javax.xml.stream.XMLStreamException:ParseError at [行,列]:[1834]消息:字符引用“”无效 XML字符。at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:594) 约[?:1.6.0_24]at com.sun.xml.internal.ws.util.xml.XMLStreamReaderFilter.next(XMLStreamReaderFilter.java:81) 约[?:1.6.0_24]at com.sun.xml.internal.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:181) 约[?:1.6.0_24]at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:349) 约[?:1.6.0_24]at com.sun.xml.internal.bind.v2.runtime.BridgeImpl.unmarshal(BridgeImpl.java:109) 约[?:1.6.0_24]at com.sun.xml.internal.bind.api.Bridge.unmarshal(Bridge.java:222) 约[?:1.6.0_24]at com.sun.xml.internal.ws.message.stream.StreamMessage.readPayloadAsJAXB(StreamMessage.java:249) 约[?:1.6.0_24]at com.sun.xml.internal.ws.client.sei.ResponseBuilder$Body.readResponse(ResponseBuilder.java:458) 约[?:1.6.0_24]at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:110) ~[?:1.6.0_24]

所以我有两个问题:

  • 我怎样才能修好它
  • 失败之前(可能在xml序列化程序开始工作之前),我是否可以(以及如何)运行我的
    stripNonValidXMLCharacters
    任何其他\u删除\u无效\u chars
    方法

  • 非常感谢!!!

    您找到解决问题的方法了吗?不完全是-那是很久以前的事了,可能是事情变了。但我所做的只是清理了服务大小上的无效字符。这毕竟是我所理解的,但在真正使用数据之前,没有选择对数据进行按摩似乎是不对的;但是无效字符中断的论点ng XML契约也是正确的。我认为SOAP应该退役:)@UCJava:)generally-aggre
     public static String parseStringToSafeXmlString(String value) {
          return stripNonValidXMLCharacters(value);
      }    
    
    
    public static String printStringToSafeXmlString(String value) {
        return stripNonValidXMLCharacters(value);
    }