解析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上使用专用的库:
- http://arc.semsol.org/docs/v2/parsing
- http://www.seasr.org/wp-content/plugins/meandre/rdfapi-php/doc/
- http://librdf.org/raptor/
- http://phpxmlclasses.sourceforge.net/show_doc.php?class=class_rdf_parser.html
而这里的一篇博客文章的解析器:
使用Dom已经证明更成功 - 谢谢。我正在使用一个弧三重存储并已使用它的解析器进行了研究,但是我想要的只是一些本体的元素,弧解析似乎只想提供一个列表或三元组。 – David
@大卫还没有与ARC合作过,所以我不能多说。你可以问http://twitter.com/bengee是否有可能。 – Gordon
我可能会做,但我现在正在使用Dom intead简单的xml。 Thansk为您提供所有帮助。 – David