简单的xml添加命名空间的孩子
Posted
技术标签:
【中文标题】简单的xml添加命名空间的孩子【英文标题】:simple xml add namespaced child 【发布时间】:2011-10-12 02:55:56 【问题描述】:我正在使用 SimpleXML 为 Google 产品创建一个 RSS 提要,并且我想创建一个命名空间的子级,但是当我这样做时
$item->addChild('g:id', 'myid');
它增加了
<id>myid</id>
而不是
<g:id></g:id>
另外我在顶部添加了
<rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
如何添加命名空间的子项?
【问题讨论】:
【参考方案1】:命名空间是addChild()
的第三个参数
$item->addChild('id', 'myid', 'http://base.google.com/ns/1.0');
See the documentation 了解更多信息。
【讨论】:
它对我有用,就像$item->addChild('g:id', 'myid', 'http://base.google.com/ns/1.0');
是的,因为我什至在您发布答案之前就已经弄清楚了,而且您的答案仍然有部分帮助。但是由于努力,我将把答案接受给你。谢谢你:)
php 文档对此很少提及。这将生成如下所示的内容: 在不知道这是否是官方的做法的情况下,我发现了一些可以完成这项工作的方法:
$item->addChild('g:g:id', 'myid');
在此代码 http://www.sanwebe.com/2013/08/creating-rss-feed-using-php-simplexml 上找到这个
【讨论】:
请注意,这实际上并没有为节点设置命名空间,尽管使用SimpleXMLElement->asXML()
序列化时的结果是等效的。试试$item->children('g', TRUE);
。
5.5 年后,这种解决方法仍然是必要的。即使是批准的答案也无法达到某些结果。以上是关于简单的xml添加命名空间的孩子的主要内容,如果未能解决你的问题,请参考以下文章