2017-04-26 49 views
1

我正在使用XMLWriter編寫XML。我已經能夠創建PHP使用正確的名稱空間和模式位置編寫XML

<foo xmlns="https://www.example.com" id="1" name="test" /> 

有了:

$w=new XMLWriter(); 
$w->openMemory(); 
$w->startDocument('1.0','UTF-8'); 
$w->startElementNS(null, "foo", "https://www.example.com"); 
$w->writeAttribute("id", 1); 
$w->writeAttribute("name", "test"); 
$w->endDocument(); 
return $w->outputMemory(true); 

不過,我需要的是增加XSI和XSI:的schemaLocation,如:

<foo xmlns="https://www.example.com" id="1" name="test" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://www.example.com/myschema.xsd" /> 

我試着使用此代碼:

$w->writeAttributeNS("xmlns","xsi", "http://www.w3.org/2001/XMLSchema-instance", "http://www.w3.org/2001/XMLSchema-instance"); 

但後來我結束了w ith:

<foo xmlns="https://www.example.com" id="1" name="test" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xmlns="http://www.w3.org/2001/XMLSchema-instance" /> 

這是無效的,也不是我所需要的。

回答

2

我想通了,只是使用writeAttribute而不是writeAttributeNS

$w->writeAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"); 
$w->writeAttribute("xsi:schemaLocation", "https://www.example.com/myschema.xsd");