2012-08-08 56 views
-2

我有兩個網址。PHP如何鏈接Soap XML與XML Schema(.xsd)

http://www.labs.skanetrafiken.se/v2.2/GetStartEndPoint.xsd 

http://www.labs.skanetrafiken.se/v2.2/querypage.asp?inpPointFr=lund&inpPointTo=ystad 

如何讓這兩者合作,以便我可以通過PHP提取信息?

如何將XML文件中的所有信息提取到PHP對象或數組中。

+0

我不知道你想做什麼。 – Tomer 2012-08-08 09:04:28

+0

我想提取:http://www.labs.skanetrafiken.se/v2.2/querypage.asp?inpPointFr=lund&inpPointTo=ystad - 並將其顯示在用戶的表格中。究竟是什麼XML用於... – 2012-08-08 09:11:44

+0

'我如何得到這兩個協作',我們需要猜測這意味着什麼,請在問題中清楚解釋你想做什麼。 – Tomer 2012-08-08 09:13:23

回答

0

我只是回答了我自己的這個代碼的問題:

/** 
* convert xml string to php array - useful to get a serializable value 
* 
* @param string $xmlstr 
* @return array 
* @author Adrien aka Gaarf 
*/ 


function xmlstr_to_array($xmlstr) { 
    $doc = new DOMDocument(); 
    $doc->loadXML($xmlstr); 
    return domnode_to_array($doc->documentElement); 
} 
function domnode_to_array($node) { 
    $output = array(); 
    switch ($node->nodeType) { 
     case XML_CDATA_SECTION_NODE: 
     case XML_TEXT_NODE: 
     $output = trim($node->textContent); 
     break; 
     case XML_ELEMENT_NODE: 
     for ($i=0, $m=$node->childNodes->length; $i<$m; $i++) { 
      $child = $node->childNodes->item($i); 
      $v = domnode_to_array($child); 
      if(isset($child->tagName)) { 
       $t = $child->tagName; 
       if(!isset($output[$t])) { 
        $output[$t] = array(); 
       } 
       $output[$t][] = $v; 
      } 
      elseif($v) { 
       $output = (string) $v; 
      } 
     } 
     if(is_array($output)) { 
      if($node->attributes->length) { 
       $a = array(); 
       foreach($node->attributes as $attrName => $attrNode) { 
        $a[$attrName] = (string) $attrNode->value; 
       } 
       $output['@attributes'] = $a; 
      } 
      foreach ($output as $t => $v) { 
       if(is_array($v) && count($v)==1 && $t!='@attributes') { 
        $output[$t] = $v[0]; 
       } 
      } 
     } 
     break; 
    } 
    return $output; 
} 




$xml = 'http://www.labs.skanetrafiken.se/v2.2/querypage.asp?inpPointFr=lund&inpPointTo=ystad';  

$xmlstr = new SimpleXMLElement($xml, null, true); 

$array = xmlstr_to_array($xmlstr->asXML()); 

print_r($array); 

此方法返回的XML數組,正是我希望能夠一起工作。