Objective-C and SAX and NSXML and demo
พยายามหา ตัวอย่างการเขียน xml ... หาไม่ได้เลยจริงๆ สุดท้ายต้องงมเอง ได้มาแค่นี้ล่ะ สุดความสามารถ ต้องสร้าง class ขึ้นมาก่อนตัวนึง เพื่อเอาไว้ให้ xml เรียก ไม่รู้ว่า Objective-c มีแบบนี้เป็น pattern หรือเปล่าเพราะใน parser ของ java เราใช้ exception แทน ไม่ได้เป็นแบบนี้
ทดลองใส่ method แค่สามตัวคือ
+ (void)parser:p didStartElement:element
จะถูกเรียกตอนเจอ element เปิด เช่น
+(void)parser:p didEndElement:e namespaceURI:u
จะถูกเรียกตอนเจอ element ปิด เช่น
+(void)parser:p foundCharacters:string {
ถูกเรียกตอนเจอตัวอักษร แม่แต่ช่องว่างก็มาเรียกตัวนี้เหมือนกัน
#import <Foundation/Foundation.h>
@interface HelloWorld:NSObject {
}
@end
@implementation HelloWorld:NSObject
NSString *saxStatus = @"none";
int i=0;
+ (void)parser:p didStartElement:element
namespaceURI:u qualifiedName:q attributes:a {
if ( [element isEqualToString:@"Doc"] ) {
NSLog(@"<Doc>");
saxStatus = @"Doc";
}
if ( [element isEqualToString:@"esearch"] ) {
NSLog(@" <esearch>");
saxStatus = @"esearch";
}
if ( [element isEqualToString:@"tentry"] ) {
NSLog(@" <tentry>");
saxStatus = @"tentry";
}
}
+(void)parser:p didEndElement:e namespaceURI:u
qualifiedName:q {
if ( [e isEqualToString:@"Doc"] ) {
NSLog(@"</Doc>");
//add word to array
i++;
}
if ( [e isEqualToString:@"esearch"] ) {
NSLog(@" </esearch>");
}
if ( [e isEqualToString:@"tentry"] ) {
NSLog(@" </tentry>");
}
}
+(void)parser:p foundCharacters:string {
if([saxStatus isEqualToString:@"esearch"]){
NSLog(@" %@", string);
}
if([saxStatus isEqualToString:@"tentry"]){
NSLog(@" %@", string);
}
saxStatus = @"none";
}
@end
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSLog(@"Hello, here are world news:\n");
NSString *location;
location = @"file:///Users/bank/programming/etlex_thai_utf8.xml";
NSXMLParser *xml=[[NSXMLParser alloc]
initWithContentsOfURL:
[NSURL URLWithString:location]];
HelloWorld *hwXML = [HelloWorld class];
[xml setDelegate:hwXML];
[xml parse];
[pool release];
return 0;
}
อุตส่าทำตั้งนาน สุดท้ายก็ยังมีปัญหากับภาษาไทยอยู่ดี ต้องแปลงเป็น UTF-8 ก่อน เพราะ nsxml อ่าน TIS-620 ไม่ได้ :( พอแปลงแล้วก็ยังมีปัญหาอยู่ แต่ยังหาสาเหตุไม่ได้ ใตรสนใจเดี๋ยวพรุ่งนี้เอา xml มาลงให้ดู

1 ความคิดเห็น:
ผมกำลังทำ XML อยู่เหมือนกัน แต่มีปัญหากับ URL ที่ใช้ภาษาไทยไม่ได้น่ะครับเช่น http://www.xyz.com?var=ไทยแลนด์
แต่ถ้าใช้ http://www.xyz.com?var=thailand แบบหลังนี่จะได้ มีคำแนะนำบ้างมั๊ยครับ ติดมาหมายวันแล้ว T_T
โดย
iamaun, เวลา
1 มกราคม 2553 เวลา 02:16
แสดงความคิดเห็น
สมัครสมาชิก ส่งความคิดเห็น [Atom]
<< หน้าแรก