您可以在文檔f.e中的所需位置寫出一次名稱空間。在頂部元件:
$writer = new XMLWriter();
$writer->openURI('php://output');
$writer->startDocument('1.0');
$writer->startElement('sample');
$writer->writeAttributeNS('xmlns','foo', null,'http://foo.org/ns/foo#');
$writer->writeAttributeNS('xmlns','bar', null, 'http://foo.org/ns/bar#');
$writer->writeElementNS('foo','quz', null,'stuff here');
$writer->writeElementNS('bar','quz', null,'stuff there');
$writer->endElement();
$writer->endDocument();
$writer->flush(true);
這應該結束了類似
<?xml version="1.0"?>
<sample xmlns:foo="http://foo.org/ns/foo#" xmlns:bar="http://foo.org/ns/bar#">
<foo:quz>stuff here</foo:quz>
<bar:quz>stuff there</bar:quz>
</sample>
它有點惱人的XmlWriter犯規保留這些聲明的軌道 - 它可以讓你寫無效的XML。這也是令人討厭的屬性是必需的,即使它可以爲空 - 並且它是第三個參數,而不是最後一個。
$ 2C, * -pike
不正是我要找的。在你的例子中,'bar'和'baz'元素可以通過完全不同的對象和方法來實現,這些對象和方法並不總是彼此相互認識。 I __always__想要指定命名空間,但我希望它只渲染第一次。 – Evert 2009-06-16 00:51:31