Skip to content

Bug or feature? XML reply with 1 entry behaves differently with n entries #21

@andreasba

Description

@andreasba

Good morning,

I am not sure whether this is a bug or a feature or if I am using Parser in a wrong way.

Take the following XML:

<?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/">
  <GetFeedSubmissionListResult>
    <HasNext>false</HasNext>
    <FeedSubmissionInfo>
      <FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus>
      <FeedType>_POST_FBA_INBOUND_CARTON_CONTENTS_</FeedType>
      <FeedSubmissionId>40737016817</FeedSubmissionId>
      <StartedProcessingDate>2016-01-17T21:13:27+00:00</StartedProcessingDate>
      <SubmittedDate>2016-01-17T21:12:53+00:00</SubmittedDate>
    </FeedSubmissionInfo>
    <FeedSubmissionInfo>
      <FeedProcessingStatus>_DONE_</FeedProcessingStatus>
      <FeedType>_POST_FBA_INBOUND_CARTON_CONTENTS_</FeedType>
      <FeedSubmissionId>40736016817</FeedSubmissionId>
      <StartedProcessingDate>2016-01-17T21:12:38+00:00</StartedProcessingDate>
      <SubmittedDate>2016-01-17T21:12:06+00:00</SubmittedDate>
      <CompletedProcessingDate>2016-01-17T21:13:13+00:00</CompletedProcessingDate>
    </FeedSubmissionInfo>
    <FeedSubmissionInfo>
      <FeedProcessingStatus>_DONE_</FeedProcessingStatus>
      <FeedType>_POST_FBA_INBOUND_CARTON_CONTENTS_</FeedType>
      <FeedSubmissionId>40735016817</FeedSubmissionId>
      <StartedProcessingDate>2016-01-17T21:07:07+00:00</StartedProcessingDate>
      <SubmittedDate>2016-01-17T21:07:01+00:00</SubmittedDate>
      <CompletedProcessingDate>2016-01-17T21:07:53+00:00</CompletedProcessingDate>
    </FeedSubmissionInfo>
    <FeedSubmissionInfo>
      <FeedProcessingStatus>_DONE_</FeedProcessingStatus>
      <FeedType>_POST_FBA_INBOUND_CARTON_CONTENTS_</FeedType>
      <FeedSubmissionId>40734016817</FeedSubmissionId>
      <StartedProcessingDate>2016-01-17T19:04:13+00:00</StartedProcessingDate>
      <SubmittedDate>2016-01-17T19:03:55+00:00</SubmittedDate>
      <CompletedProcessingDate>2016-01-17T19:04:54+00:00</CompletedProcessingDate>
    </FeedSubmissionInfo>
  </GetFeedSubmissionListResult>
  <ResponseMetadata>
    <RequestId>608dc493-ca8a-4b4d-99a5-7775269e2ac6</RequestId>
  </ResponseMetadata>
</GetFeedSubmissionListResponse>

If I parse this using

$responseItems = $requestStatus->parsedResponse['GetFeedSubmissionListResult']['FeedSubmissionInfo'];

my $responseItems contain an array of four items from $responseItems[0] to $responseItems[3] where I can access all attributes like FeedSubmissionId for example like $responseItems[1]['FeedSubmissionId'] - perfect.

However, if the XML response only has ONE FeedSubmissionInfo item, like this:

<?xml version="1.0"?>
<GetFeedSubmissionListResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/">
  <GetFeedSubmissionListResult>
    <HasNext>false</HasNext>
    <FeedSubmissionInfo>
      <FeedProcessingStatus>_IN_PROGRESS_</FeedProcessingStatus>
      <FeedType>_POST_FBA_INBOUND_CARTON_CONTENTS_</FeedType>
      <FeedSubmissionId>40737016817</FeedSubmissionId>
      <StartedProcessingDate>2016-01-17T21:13:27+00:00</StartedProcessingDate>
      <SubmittedDate>2016-01-17T21:12:53+00:00</SubmittedDate>
    </FeedSubmissionInfo>
  </GetFeedSubmissionListResult>
  <ResponseMetadata>
    <RequestId>608dc493-ca8a-4b4d-99a5-7775269e2ac6</RequestId>
  </ResponseMetadata>
</GetFeedSubmissionListResponse>

Then $responseItems[0]['FeedSubmissionId'] throws an illegal offset error, since the parser (of course?) parsed the response not like $responseItems[0]['FeedSubmissionId'] but like this: $responseItems['FeedSubmissionId'].

Now I am wondering if this is a bug or works as designed?

And what would be the workaround? Convert the whole xml to a collection and then work with that?

Thanks
Andreas

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions