PHP:DOMDocument - 带冒号的属性?

时间:2011-06-09 14:16:09

标签: php attributes svg domdocument colon

我正在使用DOMDocument来解析XML(SVG)。

某些节点的属性中包含冒号,如:

<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";
  }
}

带有:的属性打印时没有第一部分(命名空间)

如何在迭代这样的属性时获取该属性的命名空间?

2 个答案:

答案 0 :(得分:3)

使用DOMDocument时,您需要明确地使用名称空间(冒号表示的名称)。

看看这个方法:http://www.php.net/manual/en/domelement.getattributenodens.php

答案 1 :(得分:1)

来自DOMNode的OP评论nodeName的答案。

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

原始答案:

来自DOMNodeprefix怎么样?

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