Почему, когда я отправляю XML в PHP, узлы строчные, а когда я анализирую их в PHP, они прописные? - PullRequest
0 голосов
/ 04 июня 2009

Это дополнительный вопрос к этому ответу:

Как мне разобрать XML из PHP, который был отправлен на сервер, как text / xml?

JavaScript / JQuery:

var xmlDoc = jQuery.createXMLDocument( "<items></items>" );
jQuery( "items", xmlDoc ).append( jQuery( "<item>My item!</item>" ) );
jQuery.ajax({
    url: "test.php",
    type: "POST",
    processData: false,
    contentType: "text/xml",
    data: xmlDoc,
    success: function( data ) {
        alert( data );
    }
});

PHP:

$xml_text = file_get_contents("php://input");
$xml = simplexml_load_string($xml_text);
echo $xml->ITEM;

Чтобы это работало, я должен использовать $ xml-> ITEM. Если я использую $ xml-> item, он не будет работать. Мне было интересно, почему, когда узел элемента добавляется, он в нижнем регистре, но когда я получаю его, он должен быть в верхнем регистре? Я хотел бы, чтобы это было в нижнем регистре в моем PHP. Спасибо.

1 Ответ

4 голосов
/ 04 июня 2009

Ваш PHP-скрипт получает My item! в качестве входных данных. Попробуйте

<?php
$xml_text = file_get_contents("php://input");
file_put_contents('test.log.txt', $xml_text);
, если считаете, что это не так.

xmlDoc - это документ xml, но результат jQuery (" My item! ") - нет. В то же время jQuery использует .nodeName, который ведет себя как .tagName для элементов.
https://developer.mozilla.org/en/DOM/element.tagName говорит:

В XML (и основанных на XML языках, таких как XHTML), tagName сохраняет регистр. В HTML tagName возвращает имя элемента в канонической заглавной форме . Значение tagName совпадает со значением nodeName.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...