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

问题描述:

我使用php的简单xml和xpath来解析rdf xml文件,并且努力获取所有rdf:about值的列表。解析RDF XML文件以获取所有rdf:关于值

有什么建议吗?

在PHP5.3之前使用带有命名空间属性的SimpleXml似乎存在一个问题。基本上,任何带有:的东西都会在转换为SimpleXml元素的对象属性时被删除。下面将做什么,但感觉hackish的对我说:

$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上使用专用的库:

而这里的一篇博客文章的解析器:

+0

使用Dom已经证明更成功 - 谢谢。我正在使用一个弧三重存储并已使用它的解析器进行了研究,但是我想要的只是一些本体的元素,弧解析似乎只想提供一个列表或三元组。 – David

+0

@大卫还没有与ARC合作过,所以我不能多说。你可以问http://twitter.com/bengee是否有可能。 – Gordon

+0

我可能会做,但我现在正在使用Dom intead简单的xml。 Thansk为您提供所有帮助。 – David