TOUCHXML 解析 xml

fmms 12年前發布 | 16K 次閱讀 TOUCHXML iOS開發 移動開發

既然要使用touchXml解析xml。那么首先應該下載touchxml類庫。猛擊我。點擊左邊的zip下載。

TOUCHXML 解析 xml

打開下載好的類庫。找到里面的Source文件夾。這就是需要用到的類庫。

然后在xcode建立一個項目。在項目中新建一個文件夾,名字隨便,就叫touchxml吧。然后將Source中的文件

拖入touchxml文件夾中。盡量將Copy itmes into destination group’s folder(if needed)勾選上。

TOUCHXML 解析 xml

這時候,你編譯他是不會通過的。你需要首先添加libxml2 library。右鍵Frameworks。通過下面的操作

TOUCHXML 解析 xml

找到libxml2.dylib添加到工程中。這還沒有結束,不能使用touchxml。還需要在工程選項中進行配置。

點擊project-》Edit Porject Settings。在窗口的搜索欄中輸入 header search.然后雙擊

Header Search Paths 后面空白。點擊左下角+,打上對號,然后在Path中輸入/usr/include/libxml2

 

TOUCHXML 解析 xml

在搜索框中輸入other linker flags 。添加上字符-lxml2。然后command +B編譯,success。

這個,我們就來個練習用一下這個touchxml。

起手我們用它的時候,先在項目里建立一個xml文件。沒有xml解析什么呀。~~~~!

在Resources文件夾下Add-》New File,選擇Mac OS x下的 Resource。然后選擇stringFile。

文件名隨意,就xmlfile.xml吧。內容可以復制下面的內容。

<books>
     <iphonebook>

   <id>01</id>
   <name>iPhoneDeveloper's</name>
   <page>123</page>
 </iphonebook>

 <iphonebook>
   <id>02</id>
   <name>ipadDeveloper's</name>
   <page>220</page>

 </iphonebook>
 <wp7book>
   <id>03</id>
   <name>wp7developer</name>
   <page>281 </page>

 </wp7book>
 <wp7book>
   <id>04</id>
   <name>windows phone 7</name>
   <page>300</page>

 </wp7book>

</books></pre>

</strong>

直接上代碼說話吧。。。。記得引用它的頭文件。#import "TouchXML.h" 

- (void)viewDidLoad 
{
    //獲得文件路徑
    NSString XMLPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"userInfo.xml"];
    //取得數據
    NSData XMLData = [NSData dataWithContentsOfFile:XMLPath];
    //生成CXMLDocument對象
    CXMLDocument *document = [[CXMLDocument alloc] initWithData:XMLData
                                                        options:0
                                                          error:nil
                              ];

//[self parseDire:document];
[self parseRoot:document]; 
[super viewDidLoad];

}</pre>

[self parseDire:document];

[self parseRoot:document]; 這兩個是兩種解析的方式,可以分別嘗試下。

- (void) parseDire:(CXMLDocument *) document
{
    NSArray *books = NULL;
    books = [document nodesForXPath:@"//iphonebook" error:nil];
    for (CXMLElement *element in books)
    {
        if ([element isKindOfClass:[CXMLElement class]])
        {
            NSMutableDictionary *item = [[NSMutableDictionary alloc] init];
            for (int i = 0; i < [element childCount]; i++)
            {
                if ([[[element children] objectAtIndex:i] isKindOfClass:[CXMLElement class]])
                {
                    [item setObject:[[element childAtIndex:i] stringValue]
                             forKey:[[element childAtIndex:i] name]
                     ];
                    NSLog(@"%@", [[element childAtIndex:i] stringValue]);
                }
            }
            //NSLog(@"%@", item);
        }
    }
    //
    books = [document nodesForXPath:@"//wp7book" error:nil];
    for (CXMLElement *element in books)
    {
        if ([element isKindOfClass:[CXMLElement class]])
        {
            NSMutableDictionary *item = [[NSMutableDictionary alloc] init];
            for (int i = 0; i < [element childCount]; i++)
            {
                if ([[[element children] objectAtIndex:i] isKindOfClass:[CXMLElement class]])
                {
                    [item setObject:[[element childAtIndex:i] stringValue]
                             forKey:[[element childAtIndex:i] name]
                     ];
                    NSLog(@"%@", [[element childAtIndex:i] stringValue]);
                }
            }
            //NSLog(@"%@", item);
        }
    }
}

-------------------------------

- (void) parseRoot:(CXMLDocument ) document
{
    CXMLElement root = [document rootElement];
    NSArray *books = [root children];

for (CXMLElement *element in books)
{
    if ([element isKindOfClass:[CXMLElement class]])
    {
        NSMutableDictionary *item = [[NSMutableDictionary alloc] init];
        for (int i = 0; i < [element childCount]; i++)
        {

            if ([[[element children] objectAtIndex:i] isKindOfClass:[CXMLElement class]])
            {
                if ([[element name] isEqualToString:@"iphonebook"]) 
                {
                    [item setObject:[[element childAtIndex:i] stringValue] forKey:[[element childAtIndex:i] name]];
                    NSLog(@"1%@", [[element childAtIndex:i] stringValue] );
                }
                if ([[element name] isEqualToString:@"wp7book"]) 
                {
                    [item setObject:[[element childAtIndex:i] stringValue] forKey:[[element childAtIndex:i] name]];
                    NSLog(@"2%@", [[element childAtIndex:i] stringValue] );
                }
            }
        }
        //NSLog(@"%@", item);
    }
}

}</pre>

 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!