PHP: DOMDocument - атрибуты с двоеточием?

Я использую 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";
  }
}

атрибуты с : печатаются без первой части (пространство имен)

Как мне получить пространство имен для этого атрибута при повторении таких атрибутов?


person Dylan    schedule 09.06.2011    source источник


Ответы (2)


Ответ из комментария OP, nodeName из DOMNode.

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

Оригинальный ответ:

Как насчет prefix из DOMNode?

$node= DOMDocument->documentElement;
foreach($node->childNodes as $key=>$childnode) {
  foreach($childnode->attributes as $attribute) {
    echo $attribute->prefix.":".$attribute->name."\n";
  }
}
person Paul DelRe    schedule 09.06.2011
comment
Спасибо, уже нашел другие свойства переменной $attribute (DOMNode). Сейчас я использую $attribute-›nodeName, который возвращает полное имя атрибута, независимо от того, есть ли у него пространство имен или нет... - person Dylan; 09.06.2011
comment
Большой! Обновленный ответ с вашими результатами для архивирования. - person Paul DelRe; 09.06.2011

Вам нужно будет работать с пространствами имен (на что указывает двоеточие) явно, когда вы используете DOMDocument.

Взгляните на этот метод: http://www.php.net/manual/en/domelement.getattributenodens.php

person js1568    schedule 09.06.2011
comment
Теперь я вижу, что на самом деле атрибуты печатаются, но без пространства имен... поэтому я изменил свой вопрос... - person Dylan; 09.06.2011