0

XMLPullParser를 사용하여 XML을 읽어야합니다. 그러나 구문 분석하려고 할 때 내 eventType은 0 (즉, START_DOCUMENT)으로 시작하고 즉시 1 (즉, END_DOCUMENT)으로 건너 뛰므로 다른 모든 태그는 건너 뜁니다. 내가 어떤 스위치 케이스를 칠 수없는거야 왜XMLPullParser - 모든 태그 건너 뛰기

public void parseProperties (InputStream in) 
{ 
    try 
    { 
     XmlPullParserFactory pullParserFactory = XmlPullParserFactory.newInstance(); 
     XmlPullParser pullParser = pullParserFactory.newPullParser(); 
     pullParser.setInput(in, null); 

     int eventType = pullParser.getEventType(); 
     while (eventType != XmlPullParser.END_DOCUMENT) 
     { 
      String name = pullParser.getName(); 
      switch (eventType) 
      { 
       case XmlPullParser.START_TAG: 
        break; 
       case XmlPullParser.END_TAG: 
        break; 
      } 
      eventType = pullParser.next(); 
     } 
    } 
    catch (XmlPullParserException ex) 
    { 
    } 
    catch (IOException ex) 
    { 
    } 
    finally 
    { 

    } 
} 

누군가가 말해 주시겠습니까 :

여기 내 예제 코드인가?

public class ParseXML { 

    private String xmlData; 

    public ParseXML (String xmlData) { 

     this.xmlData = xmlData; 
    } 

    public boolean process() { 

     boolean status = true; 
     boolean inEntry = false; 
     String textValue = ""; 

     try { 

      XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 
      factory.setNamespaceAware(true); 
      XmlPullParser xpp = factory.newPullParser(); 
      xpp.setInput(new StringReader(this.xmlData)); 

      int eventType = xpp.getEventType(); 

      while (eventType != XmlPullParser.END_DOCUMENT) { 

       String tagName = xpp.getName(); 

       switch (eventType) { 

        case XmlPullParser.START_TAG: 
         if (tagName.equalsIgnoreCase("MyTagStart")) { 
          inEntry = true; 
         } 
         break; 

        case XmlPullParser.TEXT: 
         textValue = xpp.getText(); 
         break; 

        case XmlPullParser.END_TAG: 
         if (inEntry) { 
          if (tagName.equalsIgnoreCase("MyTagEnd")) { 
           inEntry = false; 
          } 
          else if (tagName.equalsIgnoreCase("SomeTag")) { 
           someInfo.setInfo(textValue); 
          } 
         } 
         break; 

        default: 
         // 
       } 
       eventType = xpp.next(); 
      } 

     } catch (Exception e) { 

      status = false; 
      e.printStackTrace(); 
     } 

     return true; 
    } 
} 

당신은 당신의 XML 데이터를 전달하는 인스턴스를 생성 :

답변

1

이 항상 나를 위해 작동

ParseXML parseXML = new ParseXML(contentXML); 
parseXML.process();