2015-04-30 4 views
2

У меня есть PHP код подключения к API:как получить значения из XML-документ

require(dirname(__FILE__) . '/MadMimi.class.php'); 
$mailer = new MadMimi('XXX.org', '000'); 
$lists = $mailer->Lists(); 
var_dump($lists); 
foreach ($lists as $list) { 
echo $list['name']; } 

var_dump показывает XML-документ в виде:

`string '<?xml version="1.0" encoding="UTF-8"?> 
<lists> 
    <list id="8" name="#1" subscriber_count="210" display_name="Display name"/> 
    <list id="9" name="#2" subscriber_count="2242" display_name="Display name"/>` 

... (длина = 2726)

но он показывает только первые несколько строк. Как мне показать все значения?

Также я пытаюсь напечатать определенные значения с помощью цикла Еогеаспа, но он не работает, и я получаю сообщение об ошибке: Invalid argument supplied for foreach()

Если Еогеасп не работает, как еще я могу получить значения из XML-документ?

Если я

$xml=simplexml_load_string($lists) or die("Error: Cannot create object"); 
print_r($xml); 

я получаю:

SimpleXMLElement Object ([list] => Array ([0] => SimpleXMLElement Object ([@attributes] => Array ([id] => 8 [name] => #1 [subscriber_count] => 210 [display_name] => Display name)) [1] => SimpleXMLElement Object ([@attributes] => Array ([id] => 9 [name] => #2 [subscriber_count] => 2242 [display_name] => Display name)) 

как я пишу цикл Еогеасп для этого?

+0

http://stackoverflow.com/questions/29934562/parsing-a-xml-in-php видеть эту ссылку, может оказаться полезной для вас –

ответ

1

Это поможет вам.

$lists = '<?xml version="1.0" encoding="UTF-8"?> 
<lists> 
    <list id="8" name="#1" subscriber_count="210" display_name="Display name"/> 
    <list id="9" name="#2" subscriber_count="2242" display_name="Display name"/> 
</lists>'; 


$xml = simplexml_load_string($lists) or die("Error: Cannot create object"); 

foreach ($xml->children() as $child) { 
    // List all the tags 
    echo '<pre>';print_r($child);echo '</pre>'; 

    foreach($child->attributes() as $a => $b) { 
    // list all the attributes 
     echo $a,'="',$b,"\"\n"; 
    } 
} 
+0

Я вставил ваш код из try {$ listing ..., но у меня получилась ошибка: ошибка PHP-анализа: синтаксическая ошибка, неожиданный «catch» (T_CATCH) – LTech

+0

Я тестировал, и он отлично работает для меня. убедитесь, что у вас есть копия правильно. – Noman

+0

У меня нет файла source = test.xml, это на Madmimi Api. Неужели это не работает? – LTech

1

Я не знаю, как ваш XML выглядит, но вы можете прочитать XML в PHP:

$file = "path to XML"; 

$xml=simplexml_load_file($file) or die("Error: Cannot create object"); 
print_r($xml); 

Это возвращает простой объект XML.

Если ваш XML содержит дочерние элементы, вы можете использовать цикл foreach для его перемещения.

+0

Я добавил мой print_r ($ XML) в оригинальный вопрос. Я не могу понять петлю foreach. Если бы вы могли мне помочь, это было бы оценено. – LTech

+0

ваш получить объект массива попытаться украсить ваш массив и вы получите массив как этот SimpleXMLElement Object ( [список] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [ ID] => 8 [имя] => # 1 [Подписчиков:] => 210 [DISPLAY_NAME] => Отображаемое имя ) ) [1] => SimpleXMLElement объекта ( [@attributes] => Array ( [ID] => 9 [имя] => # 2 [Подписчиков:] => 2242 [DISPLAY_NAME] => Отображаемое имя ) ) Теперь пройдите через детей и пересечь их. Если вы не уверены в путешествии, я рекомендую прочитать прохождение массива – rajatsaurastri

+0

, вы можете попробовать echo '

'; print_r($xml); echo '
'; так что это было бы много читаемо для вас и было бы легко понять и пройти – rajatsaurastri

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