在PHP中使用名称空间URI生成XML

时间:2009-08-20 13:46:48

标签: php xml dom namespaces

何使用DOM使用php制作这个“简单”的xml?我们欢迎完整的代码。

<rss version="2.0"
  xmlns:wp="http://url.com"
  xmlns:dc="http://url2.com"
>
 <channel>
  <items>
   <sometags></sometags>
   <wp:status></wp:status>
  </items>
 </channel>
</rss>
我很迷茫。代码对我的帮助不仅仅是任何解释。

2 个答案:

答案 0 :(得分:6)

以下是代码:

<?php
$dom = new DOMDocument('1.0', 'utf-8');

$rss = $dom->createElement('rss');
$dom->appendChild($rss);

$version = $dom->createAttribute('version');
$rss->appendChild($version);

$value = $dom->createTextNode('2.0');
$version->appendChild($value);

$xmlns_wp = $dom->createAttribute('xmlns:wp');
$rss->appendChild($xmlns_wp);

$value = $dom->createTextNode('http://url.com');
$xmlns_wp->appendChild($value);

$xmlns_dc = $dom->createAttribute('xmlns:dc');
$rss->appendChild($xmlns_dc);

$value = $dom->createTextNode('http://url2.com');
$xmlns_dc->appendChild($value);

$channel = $dom->createElement('channel');
$rss->appendChild($channel);

$items = $dom->createElement('items');
$channel->appendChild($items);

$sometags = $dom->createElement('sometags', '');
$items->appendChild($sometags);

$wp_status = $dom->createElement('wp:status', '');
$items->appendChild($wp_status);

echo $dom->saveXML();
?>

输出:

<?xml version="1.0" encoding="utf-8"?>
<rss 
  version="2.0" 
  xmlns:wp="http://url.com" 
  xmlns:dc="http://url2.com"
>
  <channel>
    <items>
      <sometags></sometags>
      <wp:status></wp:status>
    </items>
  </channel>
</rss>

更多帮助:http://us2.php.net/manual/en/book.dom.php

答案 1 :(得分:1)

如果您想要“简单”,请使用SimpleXML,而不是DOM。请注意,SimpleXML不会缩进XML。

$rss = simplexml_load_string('<rss version="2.0" xmlns:wp="http://url.com" xmlns:dc="http://url2.com" />');

$channel  = $rss->addChild('channel');
$items    = $channel->addChild('items');
$sometags = $items->addChild('sometags');
$status   = $items->addChild('status', null, 'http://url.com');

echo $rss->asXML();