2010-08-06 4 views
1

привет, я использую функцию xml simplexml_load_string для чтения строки xml, но нет никакого выхода этой функции, я также использую функцию dom, но тот же ответ этого. Есть ли какой-либо другой способ чтения xml? или есть ли какие-либо изменения на сервере для включения этих функций.php xml требования к функции

+0

$ результата = новый SimpleXMLElement ($ XML), где $ XML является строкой XML и результатом является строкой в ​​объекте PHP. Это может помочь – Luke

+0

Пожалуйста, разместите код для просмотра. Вы выводите XML с помощью [SimpleXmlElement :: asXml] (http://de2.php.net/manual/en/simplexmlelement.asXML.php) – Gordon

+0

Извините, я, возможно, пропустил этот вопрос, я думал, что OP имеет строку xml и хочет читать/перемещаться по ней с помощью php – Luke

ответ

5

Есть много причин, по которым вы можете вообще не иметь никакого вывода. Некоторый я могу думать, являются:

  • Там есть ошибка синтаксического анализа в сценарии и ваша версия PHP не настроена для отображения ошибок при запуске. см. display_startup_errors и/или добавить некоторый безусловный вывод в скрипт (чтобы, если этот вывод отсутствует, вы знаете, что скрипт даже не достиг этого утверждения).

  • Сценарий не достигает инструкции из-за некоторых условий (`if (false) {...}). Снова добавьте некоторый вывод и/или используйте отладчик, чтобы узнать, достигнуто ли утверждение.

  • Строка содержит что-то недопустимое xml, и поэтому анализатор libxml отдает и simplexml_load_string() возвращает false. Проверьте возвращаемое значение и, возможно, проверьте ошибки, с которыми мог столкнуться libxml, см. http://docs.php.net/function.libxml-use-internal-errors

  • Модуль SimpleXML отсутствует (хотя в последних версиях php он включен по умолчанию). Используйте extension_loaded() и/или function_exists(), чтобы проверить это.

Повторите попытку с еще большим количеством ошибок обработки, например.

<?php 
// this is only for testing purposes 
// set those values in the php.ini of your development server if you like 
// but use a slightly more sophisticated error handling/reporting mechanism in production code. 
error_reporting(E_ALL); ini_set('display_errors', 1); 

echo 'php version: ', phpversion(), "\n"; 
echo 'simplexml_load_string() : ', function_exists('simplexml_load_string') ? 'exists':"doesn't exist", "\n"; 

$xml = '<a> 
    >lalala 
    </b> 
</a>'; 

libxml_use_internal_errors(true); 
$doc = simplexml_load_string($xml); 
echo 'errors: '; 
foreach(libxml_get_errors() as $err) { 
    var_dump($err); 
} 

if (!is_object($doc)) { 
    var_dump($doc); 
} 
echo 'done.'; 

должен напечатать что-то вроде

php version: 5.3.2 
simplexml_load_string() : exists 
errors: object(LibXMLError)#1 (6) { 
    ["level"]=> 
    int(3) 
    ["code"]=> 
    int(76) 
    ["column"]=> 
    int(7) 
    ["message"]=> 
    string(48) "Opening and ending tag mismatch: a line 1 and b 
" 
    ["file"]=> 
    string(0) "" 
    ["line"]=> 
    int(3) 
} 
object(LibXMLError)#2 (6) { 
    ["level"]=> 
    int(3) 
    ["code"]=> 
    int(5) 
    ["column"]=> 
    int(1) 
    ["message"]=> 
    string(41) "Extra content at the end of the document 
" 
    ["file"]=> 
    string(0) "" 
    ["line"]=> 
    int(4) 
} 
bool(false) 
done. 
+0

, и я получаю содержимое xml через завиток, а затем загружаю этот ответ как sxe = simlpexml_load_string (ответ), но когда я печатаю, пустой экран sxe появится даже при печати var_dump (sxe) bool (flase) пришел как вывод, но когда я распечатаю xml, он отображает содержимое. – Badshah

+0

. bool (false) указывает, что XML-документ недействителен/правильно сформирован. И libxml_use_internal_errors/libxml_get_errors должны сказать вам, почему. – VolkerK

+0

ура помогла нагрузкам :) – encodes

Смежные вопросы