PHP:DOMDocument - 带有冒号的属性?

问题描述:

我正在使用DOMDocument来解析XML(SVG)。PHP:DOMDocument - 带有冒号的属性?

一些节点具有属性与在它冒号,如:

<svg 
    id="svg2" 
    width="1000" 
    height="1000" 
    sodipodi:version="0.32" 
    inkscape:version="0.48.1 " 
    ... 
> 

但是,当我做:

$node= DOMDocument->documentElement; 
foreach($node->childNodes as $key=>$childnode) { 
    foreach($childnode->attributes as $attribute) { 
    echo $attribute->name."\n"; 
    } 
} 

的属性与一个:被打印而无需所述第一部分(命名空间)

如何在遍历这样的属性时获取该属性的名称空间?

回答,nodeNameDOMNode

$node= DOMDocument->documentElement; 
foreach($node->childNodes as $key=>$childnode) { 
    foreach($childnode->attributes as $attribute) { 
    echo $attribute->nodeName."\n"; 
    } 
} 

原来的答案:

如何prefixDOMNode

$node= DOMDocument->documentElement; 
foreach($node->childNodes as $key=>$childnode) { 
    foreach($childnode->attributes as $attribute) { 
    echo $attribute->prefix.":".$attribute->name."\n"; 
    } 
} 
+0

Thanx,已经找到$ attribute变量(DOMNode)的其他属性。我现在使用$ attribute-> nodeName,它返回整个属性名称,不管它是否有命名空间... – Dylan 2011-06-09 14:46:10

+0

太棒了!用您的归档结果更新答案。 – 2011-06-09 14:52:29

当您使用DOMDocument时,您将需要明确使用名称空间(这是冒号指示的内容)。

看看这个方法:从OP的评论http://www.php.net/manual/en/domelement.getattributenodens.php

+0

整个参考:http://php.net/manual/en/book.dom.php – js1568 2011-06-09 14:21:07

+0

我现在看到实际上的属性进行打印,但是没有命名空间,所以,我改变了我的问题... – Dylan 2011-06-09 14:29:28