Frage

War es hilfreich?

Lösung

Geben Sie in einem vorbei InputStream oder Reader? Wenn ja, können Sie die Quelle in einer anderen Klasse einwickeln (wie wie BufferedReader funktioniert) aber verwenden Sie es, um die unnötigen Zeichen fallen zu lassen.

Andere Tipps

Ich denke, Sie werden es eine ziemlich schwere Zeit damit haben. Mein Verständnis ist, dass der WSDL 2.0 -Standard auf XML 1.0 basiert. Welche Art von Dienst rufen Sie also an, der sich selbst mit WSDL beschreibt (unter der Annahme von XML 1.0) und dann anfängt, Ihnen Nachrichten mit XML 1.1 -Zeichen zu senden?

Wenn Sie einen Axis2 -Dienst definieren, können Sie definieren, welche Handler sie in der Datei dienste.xml haben. Zum Beispiel auf diese Seite Sie haben einen Service, der den org.apache.axis2.receivers.rawxmlinoutMessagereceiver verwendet hat ... Ich weiß, das ist nicht das, was Sie versuchen zu tun, aber vielleicht ist es ein Ort, um zu suchen oder zu denken.

Es gibt noch eine Option - damit der Parser den Eingang als XML 1.1 behandelt. Da Axis2 Woodstox -Parser verwendet, können Sie die erweitern WstxInputFactory und überschreiben die Methode createPrivateConfig():

@Override
public ReaderConfig createPrivateConfig() {
    ReaderConfig config = super.createPrivateConfig();
    config.enableXml11(true);
    return config;
}

Verwenden Sie dann diese benutzerdefinierte Fabrik über die Systemeigenschaft: -Djavax.xml.stream.xmlinputfactory = mypackage.mywstxInputFactory

Beachten Sie, dass eine solche Problemumgehung nur für Fälle gilt, wenn Sie den fehlerhaften Webdienst, der ungültige XML erzeugt, absolut nicht ändern kann. Es ist möglich, Nebenwirkungen zu begegnen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top