XML Теги удаляются из данных в PHP Страница извлекается из AWS DynamoDB - PullRequest
0 голосов
/ 10 февраля 2020

Набросал страницу PHP для извлечения данных из таблицы DynamoDB. Страница извлекает поле с данными XML, submissionMessageSent и отображает его дважды.

  • Первое вхождение: Похоже на данные с отсутствующими тегами XML.
  • Второе вхождение: Похоже на данные с тегами XML.

Между двумя вхождениями переменная не обновляется кодом в страница. Данные хранятся с тегами в «Динамо» в виде большой старой строки.

enter image description here

Почему теги XML удаляются в одном случае, но не другой?

Rendered Page

<html>
    <head>
        <title>Spyglass</title>
        <link rel="stylesheet" type="text/css" href="./style.css">
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
    </head>
    <body>
        <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="get">
            Submission Identifier: <input name="submission_id" type="submission_identifier" size="45" value="<?php $submissionId ?>"/>
            <input type="submit">
        </form>
        <?php
            date_default_timezone_set('UTC');

            $configs = include('./config.php');

            require './vendor/autoload.php';

            use Aws\DynamoDb\Exception\DynamoDbException;
            use Aws\DynamoDb\Marshaler;

            if ( isset($_GET["submission_id"]) && $_GET["submission_id"] != "" ) {
                $aws_credentials = new Aws\Credentials\Credentials(
                    $configs['aws_account_key'],
                    $configs['aws_account_secret']
                );

                $sdk = new Aws\Sdk([
                    'region'  => $configs['aws_region_identifier'],
                    'version' => "2012-08-10",
                    'credentials' => $aws_credentials
                ]);

                $dynamodb = $sdk->createDynamoDb();
                $marshaler = new Marshaler();

                $ddb_query_predicate = '{":id": "' . $_GET["submission_id"] . '"}';
                $eav = $marshaler->marshalJson($ddb_query_predicate);

                $params = [
                    'TableName' => "Orders",
                    'KeyConditionExpression' => '#submissionId = :id',
                    'ExpressionAttributeNames'=> ["#submissionId" => "submissionId"],
                    'ExpressionAttributeValues' => $eav
                ];

                try {
                    $submissionQueryResponse = $dynamodb->query($params);

                    $submission = $submissionQueryResponse['Items'][0];
                    $submissionObject = $marshaler->unmarshalItem($submission, true);

                    // Extract the message sent to the ERP system by the preprocessor
                    $submissionMessageSent = $submissionObject->submissionMessageSent;
echo "<p><b>1:</b> $submissionMessageSent</p>";

                    echo <<<EOT
<textarea id="sent" wrap="off" placeholder="Sent" rows="20" cols="75">$submissionMessageSent</textarea>
EOT;

                } catch (DynamoDbException $e) {
                    echo "Unable to query:\n";
                    echo $e->getMessage() . "\n";
                }
            }
        ?>
    </body>
</html>

ПРИМЕЧАНИЕ : полное раскрытие. Мне пришлось вытащить части кода страницы, чтобы не разглашать конфиденциальную информацию. Не распинай меня, если я пропустил тег в каком-то месте чистки. Вы понимаете суть моей проблемы.

1 Ответ

2 голосов
/ 10 февраля 2020

Ваш XML отображается как HTML, они игнорируются веб-браузером. Их можно увидеть в текстовой области, так как это будет экранировать символы тега.

Теги будут присутствовать при просмотре необработанного вывода html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...