PHP: DOMDocument - атрибуты с двоеточием в нем? - PullRequest
1 голос
/ 09 июня 2011

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

3 голосов
/ 09 июня 2011

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

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

1 голос
/ 09 июня 2011

Ответ из комментария 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";
  }
}
...