Eğer kök elemana bir kukla özniteliği eklemek zorunda istemiyorsanız, bunu elle ad bildirebilirsiniz.
Bu mevcut bir cevap ima olarak ("Unable to add Attribute with Namespace Prefix using PHP Simplexml" ) by prefixing with xmlns:
çalışır ve bu kök elemanın durumunda iki kez de adının bir parçası olarak:
$uri = 'http://www.w3.org/2001/XMLSchema-instance';
$root = new SimpleXMLElement("<root/>");
$root->addAttribute('xmlns:xmlns:i', $uri);
######
$child = $root->addChild('foo');
$child->addAttribute( 'xmlns:i:bar', 'baz');
######
echo $root->asXml();
(Okunabilirlik için elle biçimlendirilmiş) verir:
<?xml version="1.0"?>
<root xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<foo i:bar="baz"/>
</root>
Yani bu xmlns:
adýnýnönüne bunu hile gibi görünüyor. Eğer elemanı yeniden eğer after bu niteliğini ayarlayarak, bu öneki belirterek w / o çocuklar eklerken de ad alanı URI kullanmak mümkün olduğunu unutmayın:
$root = new SimpleXMLElement($root->asXML());
$child = $root->addChild('foo');
$child->addAttribute( 'i:bar', 'bazy', $uri);
####
echo $root->asXml();
(Okunabilirlik için elle biçimlendirilmiş) verir:
<?xml version="1.0"?>
<root xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<foo i:bar="baz"/>
<foo i:bar="bazy"/>
</root>
Bu ikinci örnek daha olasılıkla kullanım amaçlanan (veya muhtemelen daha fazla beklenen) tür gibi görünüyor. Bu doğru yapmak için tek yolu DOMDocument sister library. This is outlined in "How to declare an XML namespace prefix with DOM/PHP?" a> yapılmış kullanımı olduğunu.