zedsのプロフィール

@zeds zeds
ありがとう数1
質問数0
回答数1
ベストアンサー数
1
ベストアンサー率
100%
お礼率
0%

  • 登録日2012/11/03
  • 性別男性
  • 職業学生
  • 都道府県東京都
  • 【アプリ開発】日本語を含むXMLファイル読み込み

    iOSアプリ開発しています。(iOS5 SDK/Xcode4.3/Objective-C) XMLファイル(日本語を含む)を読み込みそれを表示さたいのですが文字化けしてしまい困っています。 今、私が試しているのは「iPhone/iPadアプリ開発逆引き大全500の極意」という書籍のサンプルの中の「XMLファイルを読み込む」というサンプルです。サンプルだとXMLファイルで読み込む文字列はアルファベットなのでちゃんとうごいて文字化けせずに表示もされます。ですが、xmlファイルの読み込みたい文字列を日本語にすると「ÅÏ∞‰æ」のような感じで文字化けしてしまいます。 このサンプルのxmlファイル読み込みにはxmlParseFile関数、libxml2を使用していて、XMLファイル(persons.xml)を読み込んでUITextViewに表示するプログラムです。 サンプルのxmlファイル内にある文字列「masuda tomoaki」「yamada taro」「tanaka ziro」をそれぞれ「松田」「山田」「田中」と書き換えて保存してアプリを実行すると文字化けします。 他にどこか書き換えないといけないのでしょうか? ↓サンプルコードを付けています。 どうしたら日本語も読み込めるようになるか、どなたかアドバイスをお願いします。ネットで何日もかけて調べても解決できなかったのでどうか助けてください。 何卒よろしくお願いします。 ↓「iPhone/iPadアプリ開発逆引き大全500の極意」のサンプルダウンロードページ(この中のBasic195) http://www.shuwasystem.co.jp/support/7980html/3352.html 以下、サンプルのコード「ViewController.h」「ViewController.m」「persons.xml」です。 【ViewController.h】 #import <UIKit/UIKit.h> #include <libxml/parser.h> #include <libxml/xpath.h> @interface ViewController : UIViewController { IBOutlet UITextView *textView; } - (IBAction)clickRead:(id)sender; @end 【ViewController.m】 #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } - (void)viewDidUnload { [super viewDidUnload]; // Release any retained subviews of the main view. } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); } - (IBAction)clickRead:(id)sender { NSString *path = [[NSBundle mainBundle] pathForResource:@"persons" ofType:@"xml"]; xmlDocPtr doc = xmlParseFile([path cStringUsingEncoding:NSUTF8StringEncoding]); // XMLファイルを読み込む xmlXPathContextPtr context = xmlXPathNewContext(doc); xmlChar *xpath = (xmlChar*)[@"//person/name" cStringUsingEncoding:NSUTF8StringEncoding]; xmlXPathObjectPtr result = xmlXPathEval(xpath , context); xmlNodeSetPtr nodeset = result->nodesetval; NSMutableString *text = [NSMutableString string]; for ( int i=0; i<nodeset->nodeNr; i++ ) { xmlChar *element = xmlNodeListGetString(doc, nodeset->nodeTab[i]->children, 1); NSLog(@"element: %s", element); [text appendFormat:@"name: %s\n", element]; } xmlXPathFreeObject(result); xmlXPathFreeContext(context); textView.text = text; } @end 【persons.xml】 <?xml version="1.0" encoding="utf-8" ?> <persons> <person id="01"> <name>masuda tomoaki</name> <age>43</age> <address>tokyo</address> </person> <person id="02"> <name>yamada taro</name> <age>30</age> <address>oosaka</address> </person> <person id="03"> <name>tanaka ziro</name> <age>20</age> <address>hokkaido</address> </person> </persons>

    • niioroo
    • 回答数2