about bank

วันอังคาร, ธันวาคม 28, 2547

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

    โดย Blogger iamaun, เวลา 1 มกราคม 2553 เวลา 02:16  

แสดงความคิดเห็น

สมัครสมาชิก ส่งความคิดเห็น [Atom]



<< หน้าแรก