2014-09-09 3 views
0

Моего формата XML тегаXml анализатор с настройкой с помощью PHP

<transcript> 
<messages> 
    <message> 
     <to>[email protected]</to> 
     <from>[email protected]</from> 
     <body>hello</body> 
     <date>2014-09-09 14:14:17.652 IST</date> 
    </message> 
    <message> 
     <to>[email protected]</to> 
     <from>[email protected]</from> 
     <body>hi dear</body> 
     <date>2014-09-10 14:14:17.652 IST</date> 
    </message> 
</messages> 
</transcript> 

Я хочу, чтобы загрузить этот файл XML и результат отображения в формате, как

2014-09-09 - Tuesday 
(2:14 PM) user1 : hello 
2014-09-10 - Wednesday 
(2:14 PM)user2 : hi dear 

Я попробовал этот PHP код

$xml_file_path='filename_with_path'; 
$XMLReader->open($xml_file_path); 
while ($XMLReader->read() && $XMLReader->name !== "transcript"); 
while ($XMLReader->read() && $XMLReader->name !== "messages"); 
while ($XMLReader->read() && $XMLReader->name !== "message"); 
while ($XMLReader->name === "message") { 
    $node = new SimpleXMLElement($XMLReader->readOuterXML()); 
} 

но $ node дает мне пустой результат, как я могу исправить это или где я ошибаюсь.

+0

Возможно, ['simplexml'] (http://ch1.php.net/manual/de/function.simplexml-load-file.php) сделает вещи намного проще для вас. – TiMESPLiNTER

ответ

0

Я лично ненавижу xml, я знаю, что это зрелый стандарт, но я ненавижу работать с неродными хранилищами данных. Даже базы данных раздражают меня.

Если я могу реорганизовать ваш код немного ...

//This turns your xml into a php object, which can be manipulated more directly 
if (file_exists('text.xml')) { 
    $xml = simplexml_load_file('text.xml'); 
} 

, то вы можете вывести довольно просто

$totalMessages = count($xml->messages->message); 
for($i = 0; $i < $totalMessages; $i++){ 
    echo "{$xml->messages->message[$i]->date}<br> 
    {$xml->messages->message[$i]->from}: {$xml->messages->message[$i]->body}<br><br>"; 
} 

Это выводит

2014-09-09 14:14:17.652 IST 
[email protected]: hello 

2014-09-10 14:14:17.652 IST 
[email protected]: hi dear 

Я оставляю это до вас нарезать и нарезать ваши струны на красивость.

+0

В качестве примечания: если ваш формат отправляет данные о состоянии в другую программу, использование json обычно проще. Это связано с тем, что json проводит различие между объектами и массивами и другими типами данных. Он встроен. Это означает, что json-парсер может автоматически принимать объект, тогда как работа с xml по существу заставит вас сделать какую-то черную работу. –

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