### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

There is an issue with `get-object-attributes` command which results in below error always: 
`aws --endpoint-url=http://localhost:4566 s3api get-object-attributes --bucket s3mock --key 20.txt --object-attributes "ObjectSize"`
````

> Response:  Unable to parse response (syntax error: line 1, column 0), invalid XML received. Further retries may succeed:
b'98\n5\n'
````

### How are you starting LocalStack?

With a docker-compose file

### Steps To Reproduce

#### Using docker-compse.yaml to start localstack

docker-compse.yaml:

```
localstack:
    image: localstack/localstack:latest
    ports:
      - '4563-4599:4563-4599'
      - '8055:8080'
    environment:
      - SERVICES=s3
      - DEBUG=1
      - LS_LOG=error
      - DATA_DIR=/tmp/localstack/data
      - AWS_DEFAULT_REGION=eu-west-1
      # - EDGE_PORT=4566
    volumes:
      - "./.localstack:/tmp/localstack"
      - "/var/run/docker.sock:/var/run/docker.sock"
```

#### cli commands to reproduce the issue

1. Create a Bucket: `aws --endpoint-url=http://localhost:4566 s3 mb s3://s3mock`
2. Create an Object: `aws --endpoint-url=http://localhost:4566 s3 cp data/20.txt s3://s3mock`

File 20.txt content are 2-digit numbers separated by newline.

3. get-object-attributes for object 20.txt :
```

 aws --endpoint-url=http://localhost:4566 s3api get-object-attributes --bucket s3mock --key 20.txt --object-attributes "ObjectSize"

```
Results in error:

> Unable to parse response (syntax error: line 1, column 0), invalid XML received. Further retries may succeed:
b'98\n5\n'



### Environment

```markdown
- OS:Mac 12.x
- LocalStack:latest
- Node 14
```


### Anything else?

_No response_
# Only set the value if it's not empty (the request's data is an empty binary by default)
                if request.data:
                    body = request.data
                    if isinstance(body, bytes):
                        body = body.decode(self.DEFAULT_ENCODING)
                    payload_parsed[payload_member_name] = body
            elif body_shape.type_name == "blob":
                # Only set the value if it's not empty (the request's data is an empty binary by default)
                if request.data:
                    payload_parsed[payload_member_name] = request.data
            else:
                original_parsed = self._initial_body_parse(request)
                payload_parsed[payload_member_name] = self._parse_shape(
                    request, body_shape, original_parsed, uri_params
                )
        else:
            # The payload covers the whole body. We only parse the body if it hasn't been handled by the payload logic.
            try:
                non_payload_parsed = self._initial_body_parse(request)
            except ProtocolParserError:
                # GET requests should ignore the body, so we just let them pass
                if n
                    raise
        # even if the payload has been parsed, the rest of the shape needs to be processed as well
        # (for members which are located outside of the body, like uri or header)
        non_payload_parsed = self._parse_shape(request, shape, non_payload_parsed, uri_params)
        # update the final result with the parsed body and the parsed payload (where the payload has precedence)
        final_parsed.update(non_payload_parsed)
        final_parsed.update(payload_parsed)
    def _initial_body_parse(self, request: HttpRequest) -> Any: