0

我想解析一個基於id的數據有區別的XML(可以用表格的形式說明)並在文本視圖中顯示(一次一個ID) 在這方面你能幫助我嗎? ?最好是在XML PullParser,因爲它是由AndroidAndroid;解析XML到文本視圖

我想XML值建議放在Textviews一次一個基於其ID

<myXmlStarts> 
<Id>1</id> 
<EnglishData>"this is 1st English line"</EnglishData> 
<UrduData>"this is 1st Urdu line"</UrduData> 
</myXmlStarts> 

<myXmlStarts> 
<Id>2</id> 
<EnglishData>"this is 2nd English line"</EnglishData> 
<UrduData>"this is 2nd Urdu line"</UrduData> 
</myXmlStarts> 

回答

0

你可以做這樣的事情,

public class TestClass { 


    static String text; 

     public static void main (String args[]) 
       throws XmlPullParserException, IOException 
      { 
       XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 
       factory.setNamespaceAware(true); 
       XmlPullParser xpp = factory.newPullParser(); 


       List<Model> listData = new ArrayList<Model>(); 
       Model model = null; 
       String xmlString = "<myXmlStarts><Id>1</Id><EnglishData>this is 1st English line</EnglishData><UrduData>this is 1st Urdu line</UrduData></myXmlStarts><myXmlStarts><Id>2</Id><EnglishData>this is 2nd English line</EnglishData><UrduData>this is 2nd Urdu line</UrduData></myXmlStarts>"; 
       xpp.setInput(new StringReader (xmlString)); 
       int eventType = xpp.getEventType(); 
       while (eventType != XmlPullParser.END_DOCUMENT) { 

        String tagname = xpp.getName(); 

        switch (eventType) { 
         case XmlPullParser.START_TAG: 

           if (tagname.equalsIgnoreCase("myXmlStarts")) { 
            System.out.println("<myXmlStarts>"); 

            model = new Model(); 
           }       

          break; 

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

         case XmlPullParser.END_TAG: 

          if (tagname.equalsIgnoreCase("myXmlStarts")) { 
            System.out.println("</myXmlStarts>"); 
           listData.add(model); 
          } 

          if (tagname.equalsIgnoreCase("Id")) { 
            System.out.println("Id is : " +text); 
            model.setId(text); 
           } 

          if (tagname.equalsIgnoreCase("EnglishData")) { 
            System.out.println("english data is : " +text); 
            model.setEngData(text); 
           } 

          if (tagname.equalsIgnoreCase("UrduData")) { 
            System.out.println("urdudata is : " +text); 
            model.setUrduData(text); 
          } 


          // ....add what are the tags you want 


         default: 
          break; 

        } 

        eventType = xpp.next(); 
       } // end of while loop 


       System.out.println("Array list size : " +listData.size()); 
       int listSize = listData.size(); 


       for (int i = 0; i < listSize; i++) { 

        System.out.println("Id : " + listData.get(i).getId()); 
        System.out.println("Id : " + listData.get(i).getEngData()); 
        System.out.println("Id : " + listData.get(i).getUrduData()); 

       } 

      } 

} 

Model.class

public class Model { 

    String id, engData, urduData; 

    public String getEngData() { 
     return engData; 
    } 
    public String getId() { 
     return id; 
    } 
    public void setId(String id) { 
     this.id = id; 
    } 
    public void setEngData(String engData) { 
     this.engData = engData; 
    } 
    public String getUrduData() { 
     return urduData; 
    } 
    public void setUrduData(String urduData) { 
     this.urduData = urduData; 
    } 

} 

輸出:

<myXmlStarts> 
Id is : 1 
english data is : this is 1st English line 
urdudata is : this is 1st Urdu line 
</myXmlStarts> 
<myXmlStarts> 
Id is : 2 
english data is : this is 2nd English line 
urdudata is : this is 2nd Urdu line 
</myXmlStarts> 
Array list size : 2 
Id : 1 
Id : this is 1st English line 
Id : this is 1st Urdu line 
Id : 2 
Id : this is 2nd English line 
Id : this is 2nd Urdu line 

我所做的就是,

  1. 創建的標識,英文資料,UruduData模型。
  2. 聲明ArraList與參數Model
  3. 每當它看到myXmlStarts爲START_TAG時,它只是初始化模型類。 (型號=新模型();)
  4. 你只需要添加到模型,一旦發現END_TAG作爲IdEnglishData等。
  5. 但是,如果它發現END_TAG爲myXmlStarts,它只是增加了,要ArrayList(的ListData .add(model);),同樣的事情發生,直到文檔結束。

現在,您擁有了ArrayList中的所有數據。只需將這些值添加到textView。我剛完成了你的一半工作。休息,你必須嘗試。祝你好運。

注:

你在你的XML標籤有一個錯誤。

變化

<Id>1</id> 

<Id>1</Id> <-- closing and opening tag name should be same. Not `i` once and 'I' later. Good luck.