2011-06-04 65 views
1

我想解析以下字符串,我從我的WebService使用SOAP接收.. 由於我無法解析我從我的Web服務收到的數據(我不知道爲什麼..請看一看這裏parsing XML using Soap Web Services)本人將數據轉換爲一個NSString,然後使用TOUCHXML解析字符串用TouchXML解析NSString?

NSString *theXML = [[NSString alloc] 
        initWithBytes: [webData mutableBytes] 
        length:[webData length] 
        encoding:NSUTF8StringEncoding]; 

,我得到的是

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 

<s:Body> 

<GetCategoryResponse xmlns="http://tempuri.org/"> 

<GetCategoryResult> 

<Root> 

<Record> 

<catid>1</catid><catname>Hi</catname><catlogo>http://10.25.4.49/monsoonstore/Category/50X50.GIF</catlogo> 

</Record> 

</Root> 

</GetCategoryResult> 

</GetCategoryResponse> 

</s:Body> 

</s:Envelope> 

,因爲我沒能獲得任何解析器讀取字符串我從web服務得到的NSData我將上面的字符串轉換爲以下(即前行爲XML我需要)

<Root><Record><catid>1</catid><catname>Hi</catname><catlogo>http://10.25.4.49/monsoonstore/Category/50X50.GIF</catlogo></Record></Root> 

CXMLDocument *doc = [[CXMLDocument alloc] initWithXMLString:check options:0 error:nil]; 



    NSArray *items = [doc nodesForXPath:@"//Root" error:nil]; 




for (CXMLElement *item in items) 

{ 


NSLog(@"Root"); 

    NSArray *titles = [item elementsForName:@"Record"]; 

for(CXMLElement *title in titles) 
{ 
    NSLog(@"Record"); 

    break; 
} 

NSArray *categories = [item elementsForName:@"catid"]; 

    for(CXMLElement *category in categories) 
    { 
     NSLog(@"catid"); 

     break; 
    } 


NSArray *artists = [item elementsForName:@"catname"]; 

    for(CXMLElement *artist in artists) 
    { 
     NSLog(@"catname"); 

     break; 
     } 
. 
. 
. 
. 

根和記錄日誌被調用,而CATID不會被調用..什麼我可能做錯了?

回答

0

我認爲你正在尋找下記錄CATID(而不是根據根)因此改變

NSArray *categories = [item elementsForName:@"catid"]; 

NSArray *categories = [titles elementsForName:@"catid"]; 

我的意思是,搜索元素CATID下記錄,而不是在根。

我上面的代碼可能會給你編譯錯誤,因爲我還沒有在TouchXML上工作,但你知道我的意思。

0

使用NSXMLParser,正如你所指定的,你需要一個可以直接由NSData創建的解析器。

NSXMLParserinitWithData通過發送NSData作爲參數返回NSXMLParser實例。

- (id)initWithData:(NSData *)data 

Parsing XML on the iPhone using NSXMLParser

+0

我做到了,但NSXMLParser無法解析正確的xml標籤,而不是讀取** **作爲第一個標籤,它讀取** **作爲第一個標籤,然後我的整個xml獲取甚至用標籤和< >符號解析。它不識別**根**或**記錄**標籤 – hemant 2011-06-04 09:36:26