解析RDF XML文件以获取所有rdf:about值

时间:2010-03-21 10:35:07

标签: php xpath simplexml rdf

我正在使用php的简单xml和xpath来解析rdf xml文件,并且很难获得所有rdf:about值的列表。

有什么建议吗?

1 个答案:

答案 0 :(得分:7)

在PHP5.3之前使用带有命名空间属性的SimpleXml时似乎存在问题。基本上,当转换为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上使用专用库:

这是关于解析器的博客文章: