Я пытаюсь разобраться с некоторыми XML в PHP.
У меня есть код, например:
<?php
$stream = fopen("xml","r");
?>
Где "xml" содержит что-то вроде этого:
<name>name1</name>
<key>key1</key>
<name>name2</name>
<key>key2</key>
и т.п.
Я хотел бы создать массив из содержимого тегов <key>
, что-то вроде keys[0] = "key1"
и keys[1] = "key2"
Любая помощь приветствуется, спасибо вам большое :)
Решение:
$xmlstr = fread($stream,filesize("xml-file"));
$sxe = new SimpleXMLElement($xmlstr);
echo $sxe->getName() . "\n";
foreach ($sxe->children() as $child) {
echo $child->children();
}
Вы должны использовать функции DOM для этого случая. Предположим, что хорошо сформированный XML-документ (xmltest.xml):
<?xml version="1.0" encoding="utf-8"?>
<root>
<name>name1</name>
<key>key1</key>
<name>name2</name>
<key>key2</key>
</root>
Этот код загружает XML файл в документ DOM и получает все узлы с key
тега;
<?php
$dom = new DOMDocument('1.0','utf-8');
$dom->load('xmltest.xml');
$keys = $dom->getElementsByTagName('key');
for ($i = 0; $i < $keys->length; $i++) {
echo $keys->item($i)->nodeValue . "</br>";
}
?>