一尘不染

无法使用PHP的SimpleXML将名称空间添加到属性

php

当我在下面尝试添加xmlns:i为属性时,我正在创建Atom供稿-

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

我将此作为输出-

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

"xmlns:"部分被切断。我需要转义- :字符吗?还是他们以其他方式添加此命名空间?


阅读 255

收藏
2020-05-29

共1个答案

一尘不染

如果要从名称空间/前缀i向$ node
添加属性,则无需事先声明名称空间。只需使用addAttribute()的第三个参数为您在第一个参数中使用的前缀提供名称空间uri。

$node = new SimpleXMLElement('<root></root>');
$node->addAttribute("i:somename", "somevalue", 'http://www.w3.org/2001/XMLSchema-instance'); 
echo $node->asXml();

版画

<?xml version="1.0"?>
<root xmlns:i="http://www.w3.org/2001/XMLSchema-instance" i:somename="somevalue"/>

如果不需要属性本身,则可以使用删除它unset(),而保留名称空间声明。

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