ปัญหามีอยู่ว่าเวลาเจอ Tag ถึงแม้ว่าข้างในไม่มีข้อความเลย ใช้ PHP ดักด้วยคำสั่ง strlen ไว้ ก็ยังจะทำงานอีกจะแก้ไงดีครับ
class.xml
<?xml version="1.0" encoding="windows-874"?>
<mybook>
<book>
<name>C Pro</name>
<name1>C Pro1</name1>
<name2>C Pro2</name2>
</book>
<book>
<name>C Pro</name>
<name1>C Pro1</name1>
<name2>C Pro2</name2>
</book>
</mybook>
rss.php
<?php
$arr=array();
$count=0;
$block="BOOK";
$key="";
$value="";
function startp($parser,$name,$att){
global $key;
$key=$name;
echo "open ".$key."<br>";
}
function endp($parser,$name){
global $count;
global $block;
echo "close ".$name."<br>";
if($name==$block){
$count=$count+1;
}
echo "count ".$count."<br>";
}
function dpage($parser,$data){
global $count;
global $value;
global $key;
global $arr;
if(strlen($data)>1){
echo "ทำ......".$key."ใส่ค่า".$data."<br>";
$value=$data;
$arr[$count]["$key"]=$value;
}
}
$p=xml_parser_create();
xml_set_element_handler($p,"startp","endp");
xml_set_character_data_handler($p,"dpage");
$fp=fopen("class.xml","r");
while($data=fread($fp,4096)){
xml_parse($p,$data,feof($fp));
}
?>
<?
print_r($arr);
?>
หน้าจอผลลัพธ์
open MYBOOK
ทำ......MYBOOKใส่ค่า
open BOOK
ทำ......BOOKใส่ค่า
open NAME
ทำ......NAMEใส่ค่าC Pro
close NAME
count 0
ทำ......NAMEใส่ค่า
open NAME1
ทำ......NAME1ใส่ค่าC Pro1
close NAME1
count 0
ทำ......NAME1ใส่ค่า
open NAME2
ทำ......NAME2ใส่ค่าC Pro2
close NAME2
count 0
ทำ......NAME2ใส่ค่า
close BOOK
count 1
ทำ......NAME2ใส่ค่า
open BOOK
ทำ......BOOKใส่ค่า
open NAME
ทำ......NAMEใส่ค่าC Pro
close NAME
count 1
ทำ......NAMEใส่ค่า
open NAME1
ทำ......NAME1ใส่ค่าC Pro1
close NAME1
count 1
ทำ......NAME1ใส่ค่า
open NAME2
ทำ......NAME2ใส่ค่าC Pro2
close NAME2
count 1
ทำ......NAME2ใส่ค่า
close BOOK
count 2
close MYBOOK
count 2
Array ( [0] => Array ( [MYBOOK] => [BOOK] => [NAME] => [NAME1] => [NAME2] => ) [1] => Array ( [NAME2] => [BOOK] => [NAME] => [NAME1] => ) )
ที่ได้ค่า เป็น 0 เพราะถึงไม่เจอตัวอักษร แต่มองแล้ว มันมากกว่า1 ก็ ทำการเพิ่มค่า array เลยออกมาเป็น ว่าง แก้ไงดี
Tag : PHP, HTML/CSS, JavaScript