PHP 5.1.2+ имеет расширение под названием SimpleXML , включенное по умолчанию.Это очень полезно для анализа правильно сформированного XML, как в примере выше.
Сначала создайте экземпляр SimpleXMLElement , передав XML его конструктору.SimpleXML проанализирует XML для вас.(Здесь я чувствую элегантность SimpleXML - SimpleXMLElement является единственным классом всей библиотеки.)
$xml = new SimpleXMLElement($yourXml);
Теперь вы можете легко перемещаться по XML, как если бы это был любой объект PHP.Атрибуты доступны в виде значений массива.Поскольку вы ищете теги с конкретными значениями атрибутов, мы можем написать простой цикл для прохождения XML:
<?php
$yourXml = <<<END
<?xml version="1.0" encoding="UTF-8"?>
<test>
<required>
<item type="binary">
<name>The name</name>
<url visibility="restricted">c:/temp/test/widget.exe</url>
</item>
<item type="document" subtype="mytype">
<name>document name</name>
<url visiblity="visible">c:/temp/test.pdf</url>
</item>
</required>
</test>
END;
// Create the SimpleXMLElement
$xml = new SimpleXMLElement($yourXml);
// Store an array of results, matching names to URLs.
$results = array();
// Loop through all of the tests
foreach ($xml->required[0]->item as $item) {
if ( ! isset($item['subtype']) || $item['subtype'] != 'mytype') {
// Skip this one.
continue;
}
// Cast, because all of the stuff in the SimpleXMLElement is a SimpleXMLElement.
$results[(string)$item->name] = (string)$item->url;
}
print_r($results);
Проверено на правильность в codepad .
Надеюсь, это поможет!