2014-03-04 73 views
1

首先你能告訴我,這是否XML:XML命名空間

<adf:source xsi:schemaLocation="http://www.rightmove.co.uk/adf/rightmoveV4n.xsd rightmoveV4n.xsd" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:adf="http://www.rightmove.co.uk/adf/rightmoveV4n.xsd"> 
</source> 

是正確的?我看不到文檔是如何開始的:<adf: source>並關閉</source>,對我來說似乎不正確?

我已經使用我自己的數據複製了結構,但無法通過</source>來關閉文檔XMLWriter() - 它用</adf:source>關閉它。

我做:

$xml = new XMLWriter(); 
$xml->openMemory(); 
$xml->startDocument(); 
$xml->startElementNS("adf", "source", "http://www.rightmove.co.uk/adf/rightmoveV4n.xsd"); 
$xml->writeAttributeNS ("xsi", "schemaLocation", "http://www.w3.org/2001/XMLSchema-instance", "http://www.rightmove.co.uk/adf/rightmoveV4n.xsd rightmoveV4n.xsd"); 

,然後最終

$xml->endElement(); 
echo $xml->outputMemory(); 

回答

2

不,不能很好地形成的XML。 XML文檔的根節點必須用相同的元素打開和關閉。就XML解析器而言,<adf:source><source>完全不同。

source元件前的adf:是所謂命名空間前綴,這好像是說的簡寫方式:「這個元素屬於命名空間http://www.rightmove.co.uk/adf/rightmoveV4n.xsd」。

因此,XMLWriter()的行爲是可以預料的,並且非常好。另一方面,產生你所顯示的XML文檔的應用程序顯然是錯誤的。

+0

感謝Mathias,我與Rightmove保持聯繫,希望我們能夠在不久的將來得到他們的開發人員的一些貢獻。就我而言,你的回答是完全正確的。 – tozjerimiah

+0

@tozjerimiah不客氣。如果對你有幫助,請考慮接受答案。 –