1. Axiom
  2. AXIOM-114

Soap envelope rpc-encoded namespace issue


    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.2.8
    • Fix Version/s: 1.2.13
    • Component/s: None
    • Labels:
    • Environment:
      java 1.6


      I have replaced saaj with axiom in my projects to manage soap handling.
      I have an rpc-encoded soap envelope containing the declarations of soapenv (xmlns:soapenv="") and xsi (xmlns:xsi="") namespaces.
      The first element of the soap body references soapenv in one of his attributes (soapenv:encodingStyle=""). Some xml elements in the soap body reference the xsi namespace (xsi:type="soapenc:string") as well.
      When I try to parse the soap body (extracted from the soap envelope) using JDOM or DOM4J I get a SaxParseException because the soapenv and xsi namespaces are not bound:
      org.xml.sax.SAXParseException: The prefix "soapenv" for attribute "soapenv:encodingStyle" associated with an element type "ns1:sendMessage" is not bound.
      Saaj handles correctly the soapenv and and xsi declarations moving them in the soap body; with axiom the soap body contain only the reference to those namespaces and not the declarations.
      The issue seems to be creating a StAXSource from Axiom payload element (obtained by calling axiomSoapMessage.getSOAPEnvelope().getBody().getFirstElement()); serializing payload calling serialize method namespace are correctly handled, but
      creating a StAXSource using XMLStreamReader and transforming it to a StreamResult I get an xml not parseable because namespaces are not bound.
      I have found a workaround transforming the StAXSource in a JDOMResult.
      The problem rises when you create a StAXSource from an Axiom payload element (calling axiomSoapMessage.getSOAPEnvelope().getBody().getFirstElement()). When you call the serialize method, namespaces are correctly handled; but if you create a StAXSource using an XMLStreamReader and try to transform it to a StreamResult you get the SaxParseException mentioned above.
      I have found a workaround transforming the StAXSource in a JDOMResult.

        2 kB
        Luca Cavanna
      2. soaprequest.xml
        1.0 kB
        Luca Cavanna
        2 kB
        Luca Cavanna


        No work has yet been logged on this issue.


          • Assignee:
            Andreas Veithen
            Luca Cavanna
          • Votes:
            0 Vote for this issue
            0 Start watching this issue


            • Created: