我正在尝试使用PHP SimpleXMLElement
生成RSS提要,问题是我需要为元素添加前缀,但无法使用SimpleXMLElement
类找到这样做的方法。
我尝试过使用$item->addChild('prefix:element', 'value')
,但在结果xml中它会删除前缀,知道为什么会发生这种情况吗?。
我想知道是否有办法使用SimpleXMLElement
或任何其他更清洁方式解决此问题,而不仅仅是回显 XML。
为了澄清,这是我的PHP代码:
$xml = new SimpleXMLElement('<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0"/>');
$channel = $xml->addChild('channel');
$channel->addChild('title', 'Text');
$channel->addChild('link', 'http://example.com');
$channel->addChild('description', 'An example item from the feed.');
foreach($this->products as $product) {
$item = $channel->addChild('item');
foreach($product as $key => $value)
$item->addChild($key, $value);
}
return $xml->asXML();
这是我正在尝试生成的示例XML:
<?xml version="1.0"?>
<rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
<channel>
<title>Test Store</title>
<link>http://www.example.com</link>
<description>An example item from the feed</description>
<item>
<g:id>DB_1</g:id>
<g:title>Dog Bowl In Blue</g:title>
<g:description>Solid plastic Dog Bowl in marine blue color</g:description>
...
</item>
...
提前致谢
答案 0 :(得分:2)
您需要传递前缀的名称空间uri,以添加前缀为
的子元素$item->addChild($key, $value, 'http://base.google.com/ns/1.0');
$xml = new SimpleXMLElement('<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0"/>');
$channel = $xml->addChild('channel');
$channel->addChild('title', 'Text');
$channel->addChild('link', 'http://example.com');
$channel->addChild('description', 'An example item from the feed.');
$item = $channel->addChild('item');
$item->addChild('g:foo', 'bar', 'http://base.google.com/ns/1.0');
print $xml->asXML();