在PHP5.3之前使用带有命名空间属性的SimpleXml时似乎存在问题.基本上,:当转换为SimpleXml元素的object属性时,任何带有a的东西都会被删除.以下会这样做,但对我来说感到讨厌:
$rdf = str_replace('rdf:about', 'rdf_about', $rdf);
$rdf = new SimpleXMLElement($rdf);
foreach($rdf->xpath('//@rdf_about') as $node) {
echo $node, PHP_EOL;
}
Run Code Online (Sandbox Code Playgroud)
看这里:
您可以使用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;
}
Run Code Online (Sandbox Code Playgroud)
但是,我建议在SimpleXml或DOM上使用专用库:
这是一篇关于解析器的博客文章:
| 归档时间: |
|
| 查看次数: |
5709 次 |
| 最近记录: |