2010-11-09 60 views
1

我正在使用TouchXML来解析传入的XML文件。到现在为止,一切运行良好,但这个文件,我有很多的麻烦:TouchXML:使用Iphone读取EDSP信息时出现问题

<item> 
     <title><![CDATA[Hotel Katschberghof]]></title> 
     <edsp:uid>92090</edsp:uid> 
     <link>http://test.dataapi.herold.at/search?aId=yasssu&amp;auth=MjAxMDExMDgwNTAwMDA6TkRobU1HVXdNVGt6T1RabFpUQTJZalV4WXpBeE1qa3pZbUZsTmpjM01qST0NCg%3D%3D&amp;c=15&amp;provider=&amp;q=PN1VW&amp;type=yp_detail</link> 
     <description><![CDATA[Betrieben wird ein 4 Sterne Hotel mit ca. 140 Betten. Mit 29.04.2008 wurde die Einzelfirma Christine Kröth in die gegenständliche Einzelfirma eingebracht.]]></description> 
     <guid>PN1VW</guid> 
     <georss:point>47.0579478809204 13.6152591216261</georss:point> 
     <geo:point> 
      <geo:lat>47.0579478809204</geo:lat> 
      <geo:long>13.6152591216261</geo:long> 
     </geo:point> 
     <edsp:itemExt type="ds"> 
      <edsp:fReq reqVStr="Details"> 
       <edsp:reqQStr>http://test.dataapi.herold.at/search?aId=yasssu&amp;auth=MjAxMDExMDgwNTAwMDA6TkRobU1HVXdNVGt6T1RabFpUQTJZalV4WXpBeE1qa3pZbUZsTmpjM01qST0NCg%3D%3D&amp;c=15&amp;provider=&amp;q=PN1VW&amp;type=yp_detail 
       </edsp:reqQStr> 
      </edsp:fReq> 
      <edsp:coord lat="47.0579478809204" long="13.6152591216261" /> 
      <edsp:contact> 
       <edsp:cName fN="" lN="Hotel Katschberghof" /> 
       <edsp:cInfo> 
        <edsp:tel>+4347342660</edsp:tel> 
        <edsp:fax>+434734406</edsp:fax> 
        <edsp:eml>[email protected]</edsp:eml> 
        <edsp:web>http://www.katschberghof.at</edsp:web> 
       </edsp:cInfo> 
       <edsp:cAddr str="Nr. 4" pCd="9863" cty="Katschberghöhe" 
        cnt="A" /> 
      </edsp:contact> 
     </edsp:itemExt> 
     <edsp:itemInfo type="lst"> 
      <edsp:lstDetails> 
       <edsp:actionProps> 
        <edsp:actionProp action="showMapLink" enabled="true" /> 
        <edsp:actionProp action="showRouteLink" enabled="true" /> 
        <edsp:actionProp action="showFacebookLink" 
         enabled="false" /> 
        <edsp:actionProp action="showVideoLink" enabled="false" /> 
        <edsp:actionProp action="showDiaLink" enabled="false" /> 
        <edsp:actionProp action="showVoucherLink" enabled="false" /> 
       </edsp:actionProps> 
      </edsp:lstDetails> 
      <edsp:styleProps> 
       <edsp:styleProp styleRef="mobEuro" /> 
      </edsp:styleProps> 
     </edsp:itemInfo> 
    </item> 

现在我试图获取//项目,但没有得到所有相关信息(主要是:EDSP:接触和地理:LAT)

NSString *XMLPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"testhotels.xml"]; 

NSData *XMLData = [NSData dataWithContentsOfFile:XMLPath]; 

CXMLDocument *doc = [[[CXMLDocument alloc] initWithData:XMLData options:0 error:nil] autorelease]; 

NSLog(@"Starting XML Parsing"); 

NSArray *nodes = NULL; 

为(CXMLElement *中的节点的节点){

item = [[NSMutableDictionary alloc] init]; 

    int counter; 

    for(counter = 0; counter < [node childCount]; counter++) { 

    // [item setObject:[[node childAtIndex:counter] stringValue] forKey:[[node childAtIndex:counter] name]]; 

     NSString * value = [[[node childAtIndex:counter] stringValue] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 

     if ([value length] != 0){ 

      [item setObject:[[node childAtIndex:counter] stringValue] forKey:[[node childAtIndex:counter] localName]]; //localName]]; 

     } 



    } 

    [res addObject:item]; 

    NSLog(@"test 1: %@", [[item valueForKey:@"edsp"] stringValue]); 

    [item release]; 

} 

NSLog(@"%@", res); 

[res release]; 

而这是日志文件:

{ 
    description = "Betrieben wird ein 4 Sterne Hotel mit ca. 140 Betten. Mit 29.04.2008 wurde die Einzelfirma Christine Kr\U00f6th in die gegenst\U00e4ndliche Einzelfirma eingebracht."; 
    guid = PN1VW; 
    itemExt = "\n\t\t\t\t\n\t\t\t\t\thttp://test.dataapi.herold.at/search?aId=yasssu&auth=MjAxMDExMDgwNTAwMDA6TkRobU1HVXdNVGt6T1RabFpUQTJZalV4WXpBeE1qa3pZbUZsTmpjM01qST0NCg%3D%3D&c=15&provider=&q=PN1VW&type=yp_detail\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t+4347342660\n\t\t\t\t\t\t+434734406\n\t\t\t\t\t\[email protected]\n\t\t\t\t\t\thttp://www.katschberghof.at\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t"; 
    link = "http://test.dataapi.herold.at/search?aId=yasssu&auth=MjAxMDExMDgwNTAwMDA6TkRobU1HVXdNVGt6T1RabFpUQTJZalV4WXpBeE1qa3pZbUZsTmpjM01qST0NCg%3D%3D&c=15&provider=&q=PN1VW&type=yp_detail"; 
    point = "\n\t\t\t\t47.0579478809204\n\t\t\t\t13.6152591216261\n\t\t\t"; 
    title = "Hotel Katschberghof"; 
    uid = 92090; 
} 

感谢您的任何建议,就如何解决这个问题?

BR,

斯特凡

回答

0

你要解析通所有相关的childNodes:

for (CXMLElement *node in nodes) { 

    for (CXMLNode *childNode1 in [node children]) { 

     NSString *nodeName1 = [childNode1 name]; // should contain item_1 in first iteration 
     NSString *nodeValue1 = [[childNode1 stringValue] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; // should contain 'text' in first iteration 

     NSLog(@"NodeName1, NodeValue1: %@, %@", nodeName1, nodeValue1); 


     if ([[childNode1 name] isEqualToString:@"title"]) { 

      NSLog(@"I am here!"); 
     [item setObject:nodeValue1 forKey:nodeName1]; 
     [res addObject:item]; 

     } 


     for (CXMLNode *childNode2 in [childNode1 children]) { 

     // NSString *nodeName2 = [childNode2 name]; // should contain item_1 in first iteration 
     // NSString *nodeValue2 = [[childNode2 stringValue] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; // should contain 'text' in first iteration 

     // NSLog(@"NodeName2, NodeValue2: %@, %@", nodeName2, nodeValue2); 

      for (CXMLNode *childNode3 in [childNode2 children]) { 

       //NSString *nodeName3 = [childNode3 name]; // should contain item_1 in first iteration 
       //NSString *nodeValue3 = [[childNode3 stringValue] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; // should contain 'text' in first iteration 

       //NSLog(@"NodeName3, NodeValue3: %@, %@", nodeName3, nodeValue3); 

       for (CXMLNode *childNode4 in [childNode3 children]) { 

       // NSString *nodeName4 = [childNode4 name]; // should contain item_1 in first iteration 
       // NSString *nodeValue4 = [[childNode4 stringValue] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; // should contain 'text' in first iteration 

       // NSLog(@"NodeValue4: %@", nodeValue4); 

        for (CXMLNode *childNode5 in [childNode4 children]) { 

        // NSString *nodeName5 = [childNode5 name]; // should contain item_1 in first iteration 
        // NSString *nodeValue5 = [[childNode5 stringValue] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; // should contain 'text' in first iteration 

        // NSLog(@"NodeName5, NodeValue5: %@, %@", nodeName5, nodeValue5); 

        } 
       } 

      } 

     } 

    } 


    [item release]; 
} 
相关问题