ネームスペースは、ドキュメント内の目的の場所、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 doesntのあるこれらの宣言を追跡する - それはあなたが無効なXMLを書くことができます。また、属性が必要な場合でも、nullにすることもできますが、最後の属性ではなく3番目の引数を迷惑にします。 $図2c
、* -pike
ないまさに私が探しているものを。あなたの例では、 'bar'と 'baz'要素は完全に異なるオブジェクトとメソッドで実装されているかもしれませんが、お互いを常に意識しているわけではありません。 私は__always__ネームスペースを指定したいが、初めて。 – Evert
私はphp/xmlwriterまたはlibxml/xmlwriterでこれをサポートしていません。あなたはおそらくこれを自分自身で把握しなければなりません。 – VolkerK