[英]Parsing XML in PHP using xpath
使用SOAP Web服務的簡單php代碼:
<?php
$url = "http://localhost:9090/TaskListService/TaskListWS?wsdl";
$client = new SoapClient($url);
$fcs = $client->__getFunctions();
var_dump($fcs);
$xml = $client->getTaskListForUser(array('userToken' => 'X:123:123:woo:John:Shoulders:mgr'));
print 'xml' . PHP_EOL;
print_r($xml);
$result = $xml->xpath('/doc/tasks/task');
print_r($result);
?>
在終端中運行以獲取:
[woo:/Library/WebServer/Documents] 255 > php TestTaskList.php
array(8) {
[0]=>
string(47) "toStringResponse toString(toString $parameters)"
[1]=>
string(77) "getTaskListForUserResponse getTaskListForUser(getTaskListForUser $parameters)"
[2]=>
string(104) "updateWaitingEntriesServiceResponse updateWaitingEntriesService(updateWaitingEntriesService $parameters)"
[3]=>
string(53) "queueEntryResponse queueEntry(queueEntry $parameters)"
[4]=>
string(77) "getAllQueueEntriesResponse getAllQueueEntries(getAllQueueEntries $parameters)"
[5]=>
string(71) "deleteQueueEntryResponse deleteQueueEntry(deleteQueueEntry $parameters)"
[6]=>
string(56) "updateEntryResponse updateEntry(updateEntry $parameters)"
[7]=>
string(107) "getAllQueueEntriesWithStatusResponse getAllQueueEntriesWithStatus(getAllQueueEntriesWithStatus $parameters)"
}
xml
stdClass Object
(
[return] => <?xml version='1.0'?><doc><tasks><task><OWNER>woo</OWNER><OID>1448826671442</OID><QUEUE_NAME>HR</QUEUE_NAME><ENTRY_NUMBER>5020</ENTRY_NUMBER><PRIORITY></PRIORITY><CREATION_DATE>11-29-2015 14:51:11</CREATION_DATE><JOB_ID>5000</JOB_ID><JOB_STEP_ID>createReporting</JOB_STEP_ID><BUSINESS_PROCESS>NewEmployee</BUSINESS_PROCESS><DATA>test_data.xml</DATA><ENTRY_STATUS></ENTRY_STATUS><PRIORITY></PRIORITY><HANDLE_BY_DATE></HANDLE_BY_DATE><ESCALATE_TO_USER></ESCALATE_TO_USER><ESCALATE_TO_ROLE></ESCALATE_TO_ROLE><QUEUED_FOR_ROLE></QUEUED_FOR_ROLE><QUEUED_FOR_USERID></QUEUED_FOR_USERID><MSG></MSG><COMMENT></COMMENT><RESULT_OBJ>1448826383597.xml</RESULT_OBJ></task><task><OWNER>woo</OWNER><OID>1448397478803</OID><QUEUE_NAME>HR</QUEUE_NAME><ENTRY_NUMBER>4710</ENTRY_NUMBER><PRIORITY></PRIORITY><CREATION_DATE>11-24-2015 15:37:58</CREATION_DATE><JOB_ID>4700</JOB_ID><JOB_STEP_ID>createDependents</JOB_STEP_ID><BUSINESS_PROCESS>NewEmployee</BUSINESS_PROCESS><DATA>dependents.xml</DATA><ENTRY_STATUS></ENTRY_STATUS><PRIORITY></PRIORITY><HANDLE_BY_DATE></HANDLE_BY_DATE><ESCALATE_TO_USER></ESCALATE_TO_USER><ESCALATE_TO_ROLE></ESCALATE_TO_ROLE><QUEUED_FOR_ROLE></QUEUED_FOR_ROLE><QUEUED_FOR_USERID></QUEUED_FOR_USERID><MSG></MSG><COMMENT></COMMENT><RESULT_OBJ>1448397449614.xml</RESULT_OBJ></task></tasks><errors><error></error></errors></doc>
)
Fatal error: Call to undefined method stdClass::xpath() in /Library/WebServer/Documents/TestTaskList.php on line 10
我應該如何獲取“任務”條目列表? 請注意,我嘗試做
$result = $xml->xpath('/doc/tasks/task');
並得到我無法弄清楚的錯誤。
當您嘗試:
$xml->xpath('/doc/tasks/task');
在$ xml中,您有一個類型為stdClass的對象,該對象沒有xpath()方法。
您首先需要創建SimpleXMLElement對象,如下所示:
$simpleXml = SimpleXMLElement($xml->return);
// or $simpleXml = simplexml_load_string($xml->return);
然后可以使用xpath():
$result = $simpleXml->xpath('/doc/tasks/task');
var_dump($result);
之后,您將看到一個數組,其中包含兩個帶有“任務”條目的SimpleXMLElement對象,並對其進行迭代。
在這里閱讀更多
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.