SOAP/XML To Array Demo

Instantiate the classes (and our mock responder.)

        $SoapNodeUtilities  = new SoapNodeUtilities();
        $MockSoapData       = new MockSoapData();
        $SoapToArray        = new SoapToArray($MockSoapData->mockXmlResponse(), LIBXML_NOCDATA);
        $data_arr           = $SoapToArray->toArray();
        $response           = htmlentities($MockSoapData->mockXmlResponse());
    

Given this SOAP response,

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <s:Body>
      <SessionResponse xmlns="http://example.com/sessions">
        <SessionResult xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
          <Result xmlns="http://example.com/accounts" xmlns:b="example.com/user">
            <b:Success>true</b:Success>
            <b:ResultInfo>
              <b:ResultInfo>
                <b:Code>200</b:Code>
                <b:Description>Registered user was found.</b:Description>
                <b:Field>UserId</b:Field>
                <b:ListItemId i:nil="true"/>
                <b:ResultStatus>SUCCESS</b:ResultStatus>
                </b:ResultInfo>
              <b:ResultInfo>
                <b:Code>200</b:Code>
                <b:Description>Registered user account is current.</b:Description>
                <b:Field>UserStatus</b:Field>
                <b:ListItemId i:nil="true"/>
                <b:ResultStatus>SUCCESS</b:ResultStatus>
                </b:ResultInfo>
              <b:ResultInfo>
                <b:Code>200</b:Code>
                <b:Description>User security updates complete.</b:Description>
                <b:Field>UserHasUpdated</b:Field>
                <b:ResultStatus>SUCCESS</b:ResultStatus>
                </b:ResultInfo>
            </b:ResultInfo>
          </Result>
          <UserComments xmlns="http://example.com/comments" xmlns:a="example.com/comments">
                <a:CommentContent>
                   <a:CommentDate>202101015</a:CommentDate>
                   <a:CommentBy>
                        <a:CommentorName>John Doe</a:CommentorName>
                        <a:CommentorDepartment>Human Resources</a:CommentorDepartment>
                        <a:CommentorPosition>Manager</a:CommentorPosition>
                        <a:CommentorComment>Mary is a hard worker.</a:CommentorComment>
                    </a:CommentBy>
                </a:CommentContent>
          </UserComments>
        </SessionResult>
      </SessionResponse>
    </s:Body>
    </s:Envelope>
    

Use SoapNodeUtilities to return the Success node.

echo $MockSoapData->outputDataPreTags($SoapNodeUtilities->findNode('Success', $data_arr));

true

Get a group of nodes with the same names and namespaces.

echo $MockSoapData->outputDataPreTags($SoapNodeUtilities->findNode('ResultInfo', $data_arr));

Array
(
    [ResultInfo] => Array
        (
            [0] => Array
                (
                    [Code] => 200
                    [Description] => Registered user was found.
                    [Field] => UserId
                    [ListItemId] => 
                    [ResultStatus] => SUCCESS
                )

            [1] => Array
                (
                    [Code] => 200
                    [Description] => Registered user account is current.
                    [Field] => UserStatus
                    [ListItemId] => 
                    [ResultStatus] => SUCCESS
                )

            [2] => Array
                (
                    [Code] => 200
                    [Description] => User security updates complete.
                    [Field] => UserHasUpdated
                    [ResultStatus] => SUCCESS
                )

        )

)

Get just the descriptions of the same nodes.

echo $MockSoapData->outputDataPreTags($SoapNodeUtilities->findNodes('Description', $data_arr));

Array
(
    [0] => Registered user was found.
    [1] => Registered user account is current.
    [2] => User security updates complete.
)

Get a more deeply nested comment node.

echo $MockSoapData->outputDataPreTags($SoapNodeUtilities->findNode('CommentorComment', $data_arr));

Mary is a hard worker.

Get all the commentor node information.

echo $MockSoapData->outputDataPreTags($SoapNodeUtilities->findNode('CommentContent', $data_arr));

Array
(
    [CommentDate] => 202101015
    [CommentBy] => Array
        (
            [CommentorName] => John Doe
            [CommentorDepartment] => Human Resources
            [CommentorPosition] => Manager
            [CommentorComment] => Mary is a hard worker.
        )

)

Output the whole array returned from SoapToArray without using SoapNodeUtilities.

echo $MockSoapData->outputDataPreTags($data_arr);

Array
(
    [Body] => Array
        (
            [SessionResponse] => Array
                (
                    [0] => Array
                        (
                            [SessionResult] => Array
                                (
                                    [0] => Array
                                        (
                                            [Result] => Array
                                                (
                                                    [Success] => true
                                                    [ResultInfo] => Array
                                                        (
                                                            [ResultInfo] => Array
                                                                (
                                                                    [0] => Array
                                                                        (
                                                                            [Code] => 200
                                                                            [Description] => Registered user was found.
                                                                            [Field] => UserId
                                                                            [ListItemId] => 
                                                                            [ResultStatus] => SUCCESS
                                                                        )

                                                                    [1] => Array
                                                                        (
                                                                            [Code] => 200
                                                                            [Description] => Registered user account is current.
                                                                            [Field] => UserStatus
                                                                            [ListItemId] => 
                                                                            [ResultStatus] => SUCCESS
                                                                        )

                                                                    [2] => Array
                                                                        (
                                                                            [Code] => 200
                                                                            [Description] => User security updates complete.
                                                                            [Field] => UserHasUpdated
                                                                            [ResultStatus] => SUCCESS
                                                                        )

                                                                )

                                                        )

                                                )

                                            [UserComments] => Array
                                                (
                                                    [CommentContent] => Array
                                                        (
                                                            [CommentDate] => 202101015
                                                            [CommentBy] => Array
                                                                (
                                                                    [CommentorName] => John Doe
                                                                    [CommentorDepartment] => Human Resources
                                                                    [CommentorPosition] => Manager
                                                                    [CommentorComment] => Mary is a hard worker.
                                                                )

                                                        )

                                                )

                                        )

                                )

                        )

                )

        )

)