Android的;解析XML来的TextView [英] Android; parsing XML to Textview

查看:256
本文介绍了Android的;解析XML来的TextView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

欲解析具有分化的id的基础上的数据的XML(可以表格形式表示),并把它在Textviews(一次一个id)的显示
你能帮助我在这方面?在XML PullParser preferably,因为它是由Android推荐

欲XML值把在Textviews一次一个根据其ID

 < myXmlStarts>
<标识> 1 LT; / ID>
< EnglishData>中,这是第一个英语系< / EnglishData>
< UrduData>中,这是第一次乌尔都语线< / UrduData>
< / myXmlStarts>< myXmlStarts>
< ID和GT; 2'; / ID>
< EnglishData>中,这是第2行英文< / EnglishData>
< UrduData>中,这是第2个乌尔都语线< / UrduData>
< / myXmlStarts>


解决方案

您可以不喜欢,

 公共类识别TestClass {
    静态字符串文本;       公共静态无效的主要(字符串ARGS [])
                 抛出XmlPullParserException,IOException异常
             {
                 XmlPullParserFactory工厂= XmlPullParserFactory.newInstance();
                 factory.setNamespaceAware(真);
                 XmlPullParser XPP = factory.newPullParser();
                 清单<模型与GT;的ListData =新的ArrayList<模型与GT;();
                 型号model = NULL;
                 字符串的xmlString =&LT; myXmlStarts&GT;&LT;编号&GT; 1&LT; / ID&GT;&LT; EnglishData&gt;这是第一次英语线474; / EnglishData&GT;&LT; UrduData&gt;这是第一次乌尔都语line</UrduData></myXmlStarts><myXmlStarts><Id>2</Id><EnglishData>this是第2次英语线474 / EnglishData&GT;&下; UrduData&gt;这是第2次乌尔都语线474 / UrduData&GT;&下; / myXmlStarts&gt;中;
                 xpp.setInput(新StringReader(的xmlString));
                 INT EVENTTYPE = xpp.getEventType();
                 而(EVENTTYPE!= XmlPullParser.END_DOCUMENT){                     字符串标记名= xpp.getName();                     开关(EVENTTYPE){
                        案例XmlPullParser.START_TAG:                              如果(tagname.equalsIgnoreCase(myXmlStarts)){
                                   的System.out.println(&所述; myXmlStarts&gt;中);                                   模型=新模式();
                                }                            打破;                        案例XmlPullParser.TEXT:
                            文字= xpp.getText();
                            打破;                        案例XmlPullParser.END_TAG:                            如果(tagname.equalsIgnoreCase(myXmlStarts)){
                                   的System.out.println(&下; / myXmlStarts&gt;中);
                                 listData.add(模型);
                            }                            如果(tagname.equalsIgnoreCase(ID)){
                                   的System.out.println(ID为:+文字);
                                   model.setId(文本);
                                }                            如果(tagname.equalsIgnoreCase(EnglishData)){
                                   的System.out.println(英语数据是:+文字);
                                   model.setEngData(文本);
                                }                            如果(tagname.equalsIgnoreCase(UrduData)){
                                   的System.out.println(urdudata是:+文字);
                                   model.setUrduData(文本);
                            }
                            // ...。增加你有什么想要的标签
                        默认:
                            打破;                    }                  EVENTTYPE = xpp.next();
                 } // while循环结束
                 的System.out.println(数组列表的大小:+ listData.size());
                 INT LISTSIZE = listData.size();
                 的for(int i = 0; I&LT; LISTSIZE;我++){                     的System.out.println(ID:+ listData.get(ⅰ).getId());
                     的System.out.println(ID:+ listData.get(ⅰ).getEngData());
                     的System.out.println(ID:+ listData.get(ⅰ).getUrduData());                }             }}

Model.class

 公共类模式{    串ID,engData,urduData;    公共字符串getEngData(){
        返回engData;
    }
    公共字符串的getId(){
        返回ID;
    }
    公共无效SETID(字符串ID){
        this.id = ID;
    }
    公共无效setEngData(字符串engData){
        this.engData = engData;
    }
    公共字符串getUrduData(){
        返回urduData;
    }
    公共无效setUrduData(字符串urduData){
        this.urduData = urduData;
    }}

输出:

 &LT; myXmlStarts&GT;
ID为:1
英语数据:这是第一线的英语
urdudata是:这是第一线乌尔都语
&LT; / myXmlStarts&GT;
&LT; myXmlStarts&GT;
ID为:2
英语数据:这是第2行英文
urdudata是:这是第二次乌尔都语线
&LT; / myXmlStarts&GT;
数组列表大小:2
ID:1
编号:这是第一个英语系
编号:这是第一次乌尔都语线
ID:2
编号:这是第2行英文
编号:这是第2行乌尔都语

我所做的就是,


  1. 创建了标识,英文资料,UruduData模型。

  2. 声明的 ArraList 与paramater为模式

  3. 每当它看到 myXmlStarts 作为START_TAG,它只是初始化模型类。 (型号=新模式();)

  4. 您只需要添加到模型一旦发现END_TAG为编号 EnglishData

  5. 但是,如果它发现END_TAG为 myXmlStarts ,它只是增加了以的ArrayList (listData.add(模型);),同样的事情发生,直到文件结束。

现在,你必须在的ArrayList 中的所有数据。只是这些值添加到的TextView 。我刚刚完成了一半的工作。休息时,你必须尝试。祝你好运。

注意:

您在你的XML标签有一个错误。

修改

 &LT;标识&GT; 1 LT; / ID&GT;

 &LT;标识&GT; 1 LT; / ID&GT; &LT;  - 截止及开标标签的名称应该是相同的。不`i`一次,'我'以后。祝你好运。

I want to Parse an XML which has data differentiated on the basis of id (can say in tabular form) and to show it in Textviews (one id at a time) Can you help me in this regard?? Preferably in XML PullParser as it is recommended by android

I want XML values to put in Textviews one at a time based on their IDs

<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>

解决方案

You can do something like ,

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;
    }

}

Output :

<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

What i did was,

  1. Created a Model for Id, English Data, UruduData.
  2. Declared an ArraList with paramater as Model.
  3. Whenever it sees myXmlStarts as START_TAG, it just initialize the model class. (model = new Model();)
  4. You just add to model once it finds the END_TAG as Id, EnglishData etc..
  5. But, if it finds the END_TAG as myXmlStarts, it just adds that to ArrayList (listData.add(model);) and the same thing happens until the end of document.

Now, you have all the data in ArrayList. Just add these values to textView. I just finished your half job. Rest, you have to try. Good luck.

NOTE :

You have a error in your xml tags.

Change

<Id>1</id>

to

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

这篇关于Android的;解析XML来的TextView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆