提问人:Ilian Andreev 提问时间:7/25/2011 最后编辑:skaffmanIlian Andreev 更新时间:2/1/2016 访问量:6951
简单 XML 添加命名空间子项
simple xml add namespaced child
问:
我正在使用 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">
如何添加命名空间子项?
答:
17赞
Michael Berkowski
7/25/2011
#1
命名空间是addChild()
$item->addChild('id', 'myid', 'http://base.google.com/ns/1.0');
有关详细信息,请参阅文档。
评论
1赞
Ilian Andreev
7/25/2011
它对我有用,就像$item->addChild('g:id', 'myid', 'http://base.google.com/ns/1.0');
0赞
Ilian Andreev
7/25/2011
是的,因为我甚至在你发布答案之前就想通了,无论如何你的答案都有部分帮助。但是,由于努力,我将把答案还给你。谢谢:)
0赞
Antony Gibbs
2/1/2016
PHP文档对此说得很少。这将生成如下所示的内容:<id xmlns=“base.google.com/ns/1.0”>myid</id> 我在 php 文档中没有看到,但我在一些代码中看到过,将命名空间前缀加倍似乎可以完成这项工作。$item->addChild('g:g:id', 'myid');将输出 <g:id>myid</g:id> 如果一些 xml 专家可以确认这是一个可接受的 approche,那就太好了。
7赞
Antony Gibbs
2/1/2016
#2
在不知道这是否是官方方法的情况下,我发现了一些可以完成这项工作的方法:
$item->addChild('g:g:id', 'myid');
在此代码上找到此代码 http://www.sanwebe.com/2013/08/creating-rss-feed-using-php-simplexml
评论
1赞
outis
9/14/2016
请注意,这实际上并没有设置节点的命名空间,尽管使用 SimpleXMLElement->asXML()
序列化时的结果是等效的。尝试。$item->children('g', TRUE);
1赞
jiheison
6/28/2021
5.5 年后,这种解决方法仍然是必要的。即使是批准的答案也无法达到某些结果。
评论