2012-03-23 3 views
0

IDと名前とURLが格納されたXMLファイルがありますandroid xmlの解析、IDの確認、対応する値の読み取り

ファイルを読み込んでIDの値を確認する必要があります。それがsoeパラメータと等しい場合、私は名前とURLを読み、チェックを停止します。そうでなければ、私は次の要素に進み、同じチェックをします。

iPhone用のコードは次のとおりです。それは私が何をする必要があるかと似ていますが、私はAndroid上でそれを実行する必要があります。SAXパーサー、DOMパーサやXMLPullParserを:

NSString *url = @"my http url to get xml file";  
NSURL *xmlURL = [NSURL URLWithString:url]; 
XMLParser *parser = [[XMLParser alloc] initXMLParser]; 

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName 
     namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName  
{ 
    if([elementName isEqualToString:@"person"]) 
    { 
     Pickers.person= person; 
     Pickers.fullName = fullName; 
     Pickers.ID = ID; 
     Pickers.URl = URl; 
     return; 
    } 

    //There is nothing to do if we encounter the Books element here. 
    // and release the object. 

    NSString *P_ID ; 
    NSString *P_URl; 

    if([elementName isEqualToString:@"ID"]) 
    { 
     P_ID = currentElementValue; 
     NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"\n"]; 

     P_ID = [[P_ID componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @""]; 

     P_ID = [P_ID stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]]; 

     [ID addObject:P_ID]; 
    }  
    else if([elementName isEqualToString:@"Name"]) 
    { 

     [fullName addObject:currentElementValue]; 
    } 
    else if([elementName isEqualToString:@"Symbol"]) 
    { 
     [person addObject:currentElementValue]; 
    } 
} 

else if([elementName isEqualToString:@"URl"]) 
{ 
    P_URl = currentElementValue; 
    NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"\n"]; 

    P_URl = [[P_URl componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @""]; 

    P_URl = [P_URl stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]]; 

    [URl addObject:P_URl]; 
} 


} 

はまた、私は私の場合には使用することをお勧めしているかを知りたいですか?

答えて

0

私が好きな、最も効率的で最も簡単な(より少ないコード、バグも少ない)が使用することですシンプルなフレームワーク。どのように使用するのが簡単で楽しいですか?

あなたはそれを見つけることができますhere

0

これはあなたを始めなければなりません。ここで

URL url = new URL("your http url"); 
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
XmlPullParser pullParser = XmlPullParserFactory.newInstance().newPullParser(); 
InputStream in = conn.getInputStream(); 
Reader reader = new InputStreamReader(new BufferedInputStream(in)); 
pullParser.setInput(reader); 
int event; 
String tag; 
while ((event = parser.next()) != XmlPullParser.END_DOCUMENT) { 
    if (XmlPullParser.START_TAG == event) { 
     tag = parser.getName(); 
     if (tag.equals("ID")) { 
     //your logic here 
     }   
    } 
} 
+0

ありがとう、私はそれを試してみます。 – user173488

0

はあなたが役立つかもしれないXMLパーサの例である:長い研究と試行錯誤の後

public class XmlParserDemo { 

private List<String> titles = new ArrayList<String>();  
public List<String> getTitles() { //getter  
    return titles;  
} 

public void processTag(XmlPullParser xParser, String tagName) throws IOException, 
XmlPullParserException { 
    if ("TAG".equals(tagName)) { //xml Tag 
     titles.add(xParser.nextText()); 
    }  
} 

public static void main (String args[]) throws XmlPullParserException, IOException{  
    XmlParserDemo xp = new XmlParserDemo(); // create OBJ  
    XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 
    factory.setNamespaceAware(true); 
    XmlPullParser xpp = factory.newPullParser();    
    URL url = new URL("your http URL"); 
    InputStreamReader reader = new InputStreamReader(url.openStream()); 
    xpp.setInput(reader);     
    int eventType = xpp.getEventType();           
    while(eventType != XmlPullParser.END_DOCUMENT){    
     if(eventType == XmlPullParser.START_TAG){ 
      xp.processTag(xpp, xpp.getName()); 
     }       
     eventType = xpp.next(); 
    }   
    List<String> xmlValues = xp.getTitles(); //passing getter values 
    StringBuffer sb = new StringBuffer(); 
    for(String values:xmlValues){ 
    sb.append("\t"); 
    sb.append(values); 
    sb.append("\n"); 
    } 
    System.out.println("\n" + sb.toString()); //Print Values             
} 

} 
+0

私はこれを試していただきありがとうございます。 – user173488

関連する問題