Разобрать файл RDF XML, чтобы получить все rdf: о значениях - PullRequest
2 голосов
/ 21 марта 2010

Я использую простые xml и xpath от php для анализа файла rdf xml и пытаюсь получить список всех значений rdf: about.

Любой совет?

1 Ответ

7 голосов
/ 21 марта 2010

Кажется, есть проблема при использовании 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:

А вот сообщение в блоге о парсерах:

...