2012-09-10 34 views
1
if($xml = simplexml_load_file($validationURL . "&output=soap12")) 
{ 
    echo "Success"; 
} 
else 
{ 
    echo "Failed"; 
} 

所以這總是失敗。 $ validationURL是「http://validator.w3.org/check?uri=http://uvm.edu/~mfurland/cs148/assign1/projects.php」嘗試使用來自W3驗證程序的SOAP 1.2響應

http://validator.w3.org/check?uri=http://uvm.edu/~mfurland/cs148/assign1/nav.php&output=soap12在瀏覽器中工作,但它不是在我的代碼中工作。如果我使用file(),我會得到一個數組,但它是所有字符串,包含我看不到的一羣字符。就像它有一個二十或四十個字符串,看起來像「0」一樣。我在這裏做錯了什麼?沒有人似乎有這個問題。當你在瀏覽器中查看

文件內容:

<m:uri>http://www.uvm.edu/~mfurland/cs148/assign1/projects.php</m:uri> 
    <m:checkedby>http://validator.w3.org/</m:checkedby> 
    <m:doctype>HTML5</m:doctype> 
    <m:charset>utf-8</m:charset> 
    <m:validity>true</m:validity> 
    <m:errors> 
     <m:errorcount>0</m:errorcount> 
     <m:errorlist></m:errorlist> 
    </m:errors> 
    <m:warnings> 
     <m:warningcount>1</m:warningcount> 
     <m:warninglist></m:warninglist> 
    </m:warnings> 
</m:markupvalidationresponse> 
</env:Body> 
</env:Envelope> 

回答

0

我經常與使用命名空間的Web服務進行通信。有兩種選擇可供選擇。用SimpleXML註冊名稱空間,或者從標籤中刪除:字符。

刪除:可能會更容易,但可能不是最好的選擇,具體取決於您想要對數據執行的操作。

要刪除冒號:

$xml_content = file_get_contents($validationURL . '&output=soap12'); 
$xml_content = preg_replace("/(<\/?)(\w+):([^>]*>)/", "$1$2$3", $xml_content); 
$xml = simplexml_load_string($xml_content); 

另外,與命名空間來上班,看到這篇文章Parse XML with Namespace using SimpleXML

+0

好的,謝謝各位大大。我以爲它沒有獲得數據,不知道爲什麼。我將使用你的方法,因爲它對我來說目前更有意義。我會盡量理解以後使用命名空間的東西。 非常感謝 – mtfurlan