Я использую простые xml и xpath от php для анализа файла rdf xml и пытаюсь получить список всех значений rdf: about.
Любой совет?
Кажется, есть проблема при использовании SimpleXml с атрибутами пространства имен до PHP5.3.По сути, все, что имеет :, будет отброшено при преобразовании в свойство объекта элемента SimpleXml.Следующее подойдет, но мне кажется хакерским:
:
$rdf = str_replace('rdf:about', 'rdf_about', $rdf); $rdf = new SimpleXMLElement($rdf); foreach($rdf->xpath('//@rdf_about') as $node) { echo $node, PHP_EOL; }
Смотрите здесь:
Вы можете использовать DOM вместоSimpleXml:
$dom = new DomDocument; $dom->loadXml($rdf); $xph = new DOMXPath($dom); $xph->registerNamespace('rdf', "http://www.w3.org/1999/02/22-rdf-syntax-ns#"); foreach($xph->query('//@rdf:about') as $attribute) { echo $attribute->value, PHP_EOL; }
Но я предлагаю использовать выделенную библиотеку для этого поверх SimpleXml или DOM:
А вот сообщение в блоге о парсерах: