您可以在文档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