Я пробовал много разных решений, но я просто новичок в этом ..
У меня есть дерево XML, как это:
<book>
<author> First author </author>
<title> aaaa </title>
<price> 111 </price>
</book>
<book>
<author> Second author </author>
<title> bbbb </title>
<price> 222 </price>
</book>
<book>
<author> Third author </author>
<title> cccc </title>
<price> 333 </price>
</book>`
Мне нужно разобрать его в моем PHP-код, чтобы получить таблицу, такую как
First author,
aaaa,
111
Second author,
bbbb,
222
Third author,
cccc,
333
Является ли это возможным?
Большое спасибо.
Вы могли бы использовать DOMDocument
класс для разбора вашего xml, уведомление что XML должен быть действительным:
// create a DOMDocument object and load your xml data
$doc = new DOMDocument();
$doc->loadXML($xmlString);
// get all book sections
$books = $doc->getElementsByTagName('book');
// loop through each item and display information
foreach($books as $book) {
print $book->getElementsByTagName('author')->item(0)->nodeValue.',<br />';
print $book->getElementsByTagName('title')->item(0)->nodeValue.',<br />';
print $book->getElementsByTagName('price')->item(0)->nodeValue.'<br /><br />';
}
Чтобы загрузить данные XML из файла вы можете использовать DOMDocument::load()
Более простой способ сделать то же самое будет использовать SimpleXML
:
// create a SimpleXMLElement
$xmlDoc = simplexml_load_string($xmlString);
// get all children of the first element
$books = $xmlDoc->children();
// loop through each item and display information
foreach($books as $book) {
print $book->author.',<br />';
print $book->title.',<br />';
print $book->price.'<br /><br />';
}
Обратите внимание, что второй пример будет работать только в том случае, если ваш xml считается правильно сформированным, вы можете перенести текущую разметку между <books></books>
:
<books>
<book>
<author> First author </author>
<title> aaaa </title>
<price> 111 </price>
</book>
...
</books>
Других решений пока нет …