无法使用PHP的SimpleXML向属性添加命名空间
作者:互联网
我正在创建一个Atom提要,当我在下面尝试添加xmlns:i作为属性时 –
$node->addAttribute("xmlns:i","http://www.w3.org/2001/XMLSchema-instance");
我把它作为输出 –
i="http://www.w3.org/2001/XMLSchema-instance"
“xmlns:”部分被切断了.我需要逃避: – 字符吗?或者他们是否有其他方式来添加此命名空间?
解决方法:
如果要将名称空间/前缀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']);
标签:php,xml-namespaces,simplexml 来源: https://codeday.me/bug/20190923/1813833.html