Как разобрать XML на php?
Как преобразовать это в вывод php?
<?xml version="1.0" encoding="iso-8859-1"?>
<employee>
<name>Mark</name>
<age>27</age>
<salary>00</salary>
</employee>
<employee>
<name>Jack</name>
<age>25</age>
<salary>00</salary>
</employee>
<employee>
<name>nav</name>
<age>25</age>
<salary>00</salary>
</employee>
5 ответов
<?php
$doc = new DOMDocument();
$doc->load( 'test1.xml' );//xml file loading here
$employees = $doc->getElementsByTagName( "employee" );
foreach( $employees as $employee )
{
$names = $employee->getElementsByTagName( "name" );
$name = $names->item(0)->nodeValue;
$ages= $employee->getElementsByTagName( "age" );
$age= $ages->item(0)->nodeValue;
$salaries = $employee->getElementsByTagName( "salary" );
$salary = $salaries->item(0)->nodeValue;
echo "<b>$name - $age - $salary\n</b><br>";
}
?>
/ / выход положить так Марк - 27 - $5000 Джек - 25 - $4000 nav-25 - $ 4000
Я действительно не понимаю ваш вопрос, но если вы хотите проанализировать xml с помощью php, вы можете использовать расширение xml:http://php.net/manual/en/book.xml.php
затем вы сможете распечатать данные по своему вкусу
думаю, что ваш XML не хватает корневой записи, поэтому синтаксический анализ будет придерживаться. Однако эта проблема в стороне, поиск simplexml_load_file и simplexml_load_string. Это самые простые способы доступа к XML в структуре в стиле PHP.
в вашем примере XML я вставил общую запись "records". Например:
$t = <<< EOF
<?xml version="1.0" encoding="iso-8859-1"?>
<records>
<employee>
<name>Mark</name>
<age>27</age>
<salary>00</salary>
</employee>
<employee>
<name>Jack</name>
<age>25</age>
<salary>00</salary>
</employee>
<employee>
<name>nav</name>
<age>25</age>
<salary>00</salary>
</employee>
</records>
EOF;
$x = @simplexml_load_string( $t );
print_r( $x );
функция warning-suppressed, так как вы, вероятно, не хотите предупреждений проверки. Во всяком случае, на данный момент проанализированный XML будет выглядеть так это:
SimpleXMLElement Object
(
[employee] => Array
(
[0] => SimpleXMLElement Object
(
[name] => Mark
[age] => 27
[salary] => 00
)
[1] => SimpleXMLElement Object
(
[name] => Jack
[age] => 25
[salary] => 00
)
[2] => SimpleXMLElement Object
(
[name] => nav
[age] => 25
[salary] => 00
)
)
)
вы можете увидеть это обсуждение: вы можете найти ответ там:
и если вы ищете решение в CodeIgniter. Эти несколько ссылок могут помочь
@pp19dd говорит, что у вас отсутствует корневой узел, ваш текущий xml-действителен.
<?xml version="1.0" encoding="iso-8859-1"?>
<document>
<employee>
<name>Mark</name>
<age>27</age>
<salary>00</salary>
</employee>
<employee>
<name>Jack</name>
<age>25</age>
<salary>00</salary>
</employee>
<employee>
<name>nav</name>
<age>25</age>
<salary>00</salary>
</employee>
</document>
синтаксический анализ с DomDocument и компиляция в массив temp
$dom = new DOMDocument();
$dom->load('data.xml');
$employees = $dom->getElementsByTagName('employee');
foreach($employees as $employee)
{
$names = $employee->getElementsByTagName( "name" );
$name = $names->item(0)->nodeValue;
$ages = $employee->getElementsByTagName( "age" );
$age = $ages->item(0)->nodeValue;
$salaries = $employee->getElementsByTagName( "salary" );
$salary = $salaries->item(0)->nodeValue;
$tmp[] = array(
'name' => $name,
'age' => $age,
'salary' => $salary
);
continue;
}
вывод в представление (список/таблица)
<table>
<tbody>
<?php foreach($tmp as $staff):?>
<tr>
<td><?php echo $staff['name'];?></td>
<td><?php echo $staff['age'];?></td>
<td style="color:red;"><?php echo $staff['salary'];?></td>
</tr>
<?php endforeach;?>
</tbody>
</table>