views:

292

answers:

2

Hi , I am creating an atom feed , when I tried below to add xmlns:i as an attribute -

$node->addAttribute("xmlns:i","http://www.w3.org/2001/XMLSchema-instance");

I got this as an output -

i="http://www.w3.org/2001/XMLSchema-instance"

"xmlns:" par was cut off. do I need to escape : char ? or is they any other way to add this namespace ?

Thanks, Sourabh

+4  A: 

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", 'http://www.w3.org/2001/XMLSchema-instance'); 
echo $node->asXml();

prints

<?xml version="1.0"?>
<root xmlns:i="http://www.w3.org/2001/XMLSchema-instance" i:somename="somevalue"/>
VolkerK
This seems like such a waste. It's declaring the namespace on every line instead on just the root.
nute
A: 

i would like to know if i can add a namespace with prefix using the addAttribute method but without adding the attribute prefix. For example, the xml would be like this :

Daniel