编程语言
首页 > 编程语言> > 无法使用PHP的SimpleXML向属性添加命名空间

无法使用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