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"/>
If the attribute itself isn't needed, you can then remove it with unset()
, leaving the namespace declaration.
unset($node->attributes('i', TRUE)['somename']);
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…