Я использую 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"; } }
атрибуты с: печатаются без первой части (пространства имен)
Как получить пространство имен для этого атрибута при повторении с помощью таких атрибутов?
Ответ из комментария 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"; } }
Вам нужно будет работать с пространствами имен (это то, что указывает двоеточие) явно при использовании DOMDocument
.
Взгляните на этот метод: http://www.php.net/manual/en/domelement.getattributenodens.php