Sourabh Sourabh - 4 months ago 17
PHP Question

Unable add namespace with PHPs SimpleXML

I am creating an Atom feed, when I tried below to add

as an attribute -


I got this as an output -


part was cut off. do I need to escape the
-character? Or is they any other way to add this namespace?


If you want to add an attribute from the namespace/prefix i to $node don't bother declaring the namespace beforehand. Just use the third parameter of addAttribute() to provide the namespace uri for the prefix you're using in the first parameter.

$node = new SimpleXMLElement('<root></root>');
$node->addAttribute("i:somename", "somevalue", ''); 
echo $node->asXml();


<?xml version="1.0"?>
<root xmlns:i="" i:somename="somevalue"/>

If the attribute itself isn't needed, you can then remove it with unset(), leaving the namespace declaration.

unset($node->attributes('i', TRUE)['somename']);