Я использую простой xml и xpath php для анализа XML-файла rdf и изо всех сил пытаюсь получить список всех rdf: о значениях.
Любой совет?
Кажется, что проблема связана с использованием SimpleXml с атрибутами с именами до PHP5.3. В принципе, все с a :
будет удалено при преобразовании в свойство объекта элемента 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:
И вот сообщение в блоге о синтаксических анализаторах: