当前位置: 首页 > 面试题库 >

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

阮才俊
2023-03-14
问题内容

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

$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']);


 类似资料:
  • 问题内容: 我正在从源头解析XML文档,并且它们使用自定义名称空间。 例如。当我使用SimpleXML进行解析时,mostix:名称空间元素均未显示或不可访问。可能是一个非常简单的解决方案,但是有什么想法吗? 问题答案: 通常,人们使用children()。

  • 问题内容: 我知道这个问题已经被问了很多遍了,但是我没有得到任何适合我情况的建议,因此我在网上和这里进行搜索,尝试了所有方法,但没有任何效果。我只需要用命名空间cap解析此XML:并且只需要其中的四个条目。 我正在使用simpleXML,并且设置了一个小的简单测试脚本,它非常适合解析常规元素。我无法为自己的狄更斯找到或获得一种使用命名空间解析元素的方法。 这是一个小示例测试脚本,其中包含我正在使用

  • 我有一个具有WSDL定义的非常基本的WCF服务,如下所示: 我想添加名称空间xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance“根据定义,但我不知道在哪里以及如何。 如何添加该名称空间?非常感谢。

  • 我试着写了下面的代码,但不明白为什么它在spl_autoload_register()中找不到具有名称空间的类? 我得到的错误是: 警告:require_once(src/test\stringhelper.php):无法打开流:没有这样的文件或目录 autoloader.php文件: src文件夹中的stringhelper.php: 我也在使用XAMPP,如果这有区别的话。

  • 问题内容: 我需要为元素添加名称空间定义,因为使用apache xmlbean生成xml时不会添加元素。如何使用xmlbeans API做到这一点? 问题答案: 我已经找到问题的答案。就是这样。

  • 问题内容: youtube.xml update_videos.php 问题答案: 所以我找到了一种使用xpath的方法,这是最好的方法还是与我的问题代码保持一致的方法?只是出于好奇。