【发布时间】:2015-03-07 15:17:46
【问题描述】:
我有一个这样的 RDF+XML 文档:
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:void="http://rdfs.org/ns/void#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<void:linkset xmlns:void="void" xmlns:rdf="rdf" rdf:about="http://xxxxx/aa.rdf#1">
<void:subjectsTarget>a</void:subjectsTarget>
<void:objectsTarget>b</void:objectsTarget>
<void:linkPredicate>c</void:linkPredicate>
<rdfs:comment xmlns:rdfs="rdfs"> comment... </rdfs:comment>
</void:linkset>
</rdf:RDF>
在 Symfony2 框架中使用 SimpleXMLElement 生成,代码如下:
$rootNode = new \SimpleXMLElement('<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:void="http://rdfs.org/ns/void#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" />');
$about = 'http://xxxx/aa.rdf#a';
$linksetNode = $rootNode->addChild('void:linkset','','void');
$linksetNode->addAttribute("rdf:about",$about,"rdf");
$linksetNode->addChild('void:subjectsTarget','a','void');
$linksetNode->addChild('void:objectsTarget','b','void');
$linksetNode->addChild('void:linkPredicate','c','void');
$linksetNode->addChild('rdfs:comment','comment...','rdfs');
谁能帮我删除节点 void:linkset 中的 xmlns:void 和 xmlns:rdf 属性(命名空间),以及 rdfs:comment 节点中的 xmlns:rdfs 属性(命名空间)?
我知道
$string = preg_replace('/xmlns:.*\"/','',$string);
但这会从根节点 rdf:RDF 中删除我不想要的 xmlns 命名空间。
如何解决?
【问题讨论】: