รบกวนถามเรื่อง php5 กับ xml หน่อยครับ

เริ่มโดย doramon034, 04 กุมภาพันธ์ 2009, 12:47:43

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

doramon034

ผมติดเรื่องจะเอา php ดึงข้อมูลจาก web service มัน return ค่ามาเป็น xml(ไม่ใช่xmlไฟล์นะครับ)

คือตาม code ข้างล่างนี้   มันดึงออกมาได้แค่ช่วงนึงเท่านั้น ผมอยากจะให้มันดึงออกมาทั้งหมดเลยอ่ะครับ วนอผู้รู้ช่วยทีนะครับ  :-*

ผมใช้ soap ดึงข้อมูลออกมาแบบนี้ครับ
require_once("nusoap/lib/nusoap.php");
$proxyhost = isset($_POST['proxyhost']) ? $_POST['proxyhost'] : '';
$proxyport = isset($_POST['proxyport']) ? $_POST['proxyport'] : '';
$proxyusername = isset($_POST['proxyusername']) ? $_POST['proxyusername'] : '';
$proxypassword = isset($_POST['proxypassword']) ? $_POST['proxypassword'] : '';
$client = new nusoap_client('http://192.168.1.5/e-Ports/service1.asmx?WSDL&debug=1', 'wsdl',
$proxyhost, $proxyport, $proxyusername, $proxypassword);
$err = $client->getError();
if ($err) {
echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
}
$person = array('sDate' => '5/28/2002' , 'eDate' => '5/30/2002');
$result = $client->call('Rail_Schedule', $person);

print_r($result);

ได้ผลลัพธ์ >>
Array ( [Rail_ScheduleResult] => Array ( [NewDataSet] => Array ( [RAIL_SCH] => Array (
  • => Array ( [trAIN_ID] => 88328MAY02 [DIRECTION] => IN [ETA] => 2002-05-28T01:12:00+07:00 [ETD] => 2002-05-28T06:00:00+07:00 ) [1] => Array ( [trAIN_ID] => 87628MAY02 [DIRECTION] => OUT [ETA] => 2002-05-28T12:42:00+07:00 [ETD] => 2002-05-28T18:18:00+07:00 ) [2] => Array ( [trAIN_ID] => 87328MAY02 [DIRECTION] => IN [ETA] => 2002-05-28T15:12:00+07:00 [ETD] => 2002-05-28T20:24:00+07:00 ) [3] => Array ( [trAIN_ID] => 87728MAY02 [DIRECTION] => IN [ETA] => 2002-05-28T19:30:00+07:00 [ETD] => 2002-05-28T22:54:00+07:00 ) [4] => Array ( [trAIN_ID] => 87928MAY02 [DIRECTION] => IN [ETA] => 2002-05-28T21:42:00+07:00 [ETD] => 2002-05-29T02:42:00+07:00 ) [5] => Array ( [trAIN_ID] => 88329MAY02 [DIRECTION] => IN [ETA] => 2002-05-29T01:12:00+07:00 [ETD] => 2002-05-29T06:00:00+07:00 ) [6] => Array ( [trAIN_ID] => 86129MAY02 [DIRECTION] => IN [ETA] => 2002-05-29T03:06:00+07:00 [ETD] => 2002-05-29T06:40:00+07:00 ) [7] => Array ( [trAIN_ID] => 1 [DIRECTION] => IN [ETA] => 2002-05-29T03:06:00+07:00 [ETD] => 2002-05-29T06:40:00+07:00 ) [8] => Array ( [trAIN_ID] => 86329MAY02 [DIRECTION] => IN [ETA] => 2002-05-29T03:48:00+07:00 [ETD] => 2002-05-29T08:18:00+07:00 ) [9] => Array ( [trAIN_ID] => 88029MAY02 [DIRECTION] => OUT [ETA] => 2002-05-29T16:06:00+07:00 [ETD] => 2002-05-29T22:30:00+07:00 ) [10] => Array ( [trAIN_ID] => 87329MAY02 [DIRECTION] => IN [ETA] => 2002-05-29T15:12:00+07:00 [ETD] => 2002-05-29T20:24:00+07:00 ) [11] => Array ( [trAIN_ID] => 87829MAY02 [DIRECTION] => OUT [ETA] => 2002-05-29T15:12:00+07:00 [ETD] => 2002-05-29T20:24:00+07:00 ) [12] => Array ( [trAIN_ID] => 87729MAY02 [DIRECTION] => IN [ETA] => 2002-05-29T19:30:00+07:00 [ETD] => 2002-05-29T22:42:00+07:00 ) [13] => Array ( [trAIN_ID] => 87929MAY02 [DIRECTION] => IN [ETA] => 2002-05-29T21:42:00+07:00 [ETD] => 2002-05-30T02:42:00+07:00 ) [14] => Array ( [trAIN_ID] => 88430MAY02 [DIRECTION] => OUT [ETA] => 2002-05-29T21:42:00+07:00 [ETD] => 2002-05-30T02:42:00+07:00 ) [15] => Array ( [trAIN_ID] => 88129MAY02 [DIRECTION] => IN [ETA] => 2002-05-29T22:12:00+07:00 [ETD] => 2002-05-30T04:12:00+07:00 ) [16] => Array ( [trAIN_ID] => 86230MAY02 [DIRECTION] => OUT [ETA] => 2002-05-29T22:12:00+07:00 [ETD] => 2002-05-30T04:12:00+07:00 ) ) ) ) )

    แล้วผมจะดึงยังไงต่อครับ ใช้คำสั่ง simplexml_load_string($result); แต่มันขึ้น error ครับ ช่วยหน่อยครับ
[direct=http://secure.hostgator.com/~affiliat/cgi-bin/affiliates/clickthru.cgi?id=patchara][/direct]
CODE FIRST2GATOR จ่าย เดือนแรก เพียง $0.01
CODE 25OFF2GATOR รายปีส่วนลด 25% สุดคุ้ม
CODE RESELL2GATOR Reseller เพียง$24.94 สุด
[direct=http://www.uiazle.com]UIAZLE.COM[/direct]

sheroku

Webservices คืนค่ามาเป็นเอกสาร xml ก็จริง แต่ถ้าตัดบางส่วนอย่างที่ nuSoap คืนค่ามาจะไม่ valid xml ดังนั้นจะใช้ simple xml class ไม่ได้ ใน nuSoap จะสามารถ define custom data type ได้ โดยเราต้องออกแบบตามโครงสร้างที่ได้คืนค่ามา หรือไม่ก็อ่านค่าแบบ multi-dimension array ก็ได้
 *Link Removed*

Tee++;

ใช้ Soap ที่มีใน PHP5 ดีกว่านะ NuSoap นี่มันกิน ทรัพยากรมากๆ แต่ถ้า XML ที่ Return มาไม่ถูก มันก็จะกลายเป็น XML Error, Syntax Error แบบนี้ต้องใช้ พวก Class ที่แปลง XML -> Array แทน Simple XML หรือไม่ก็เปลี่ยนไปเอา DOM Document อ่านแทน


http://www.ibm.com/developerworks/library/x-xmlphp1.html
http://keithdevens.com/software/xmlrpc
[direct=http://laravel.in.th]Laravel in Thai[/direct]
[direct=http://jquerytips.com]jQueryTips by Tee++;[/direct]
[direct=https://www.facebook.com/jQueryTips]jQueryTips Page[/direct]
[direct=https://www.facebook.com/Laravel.in.th]Laravel in Thai Page[/direct]
[direct=https://twitter.com/Teepluss]Teepluss's Twitter[/direct]