【问题标题】:Parsing XML using XmlPullParser for specific tags?使用 XmlPullParser 为特定标签解析 XML?
【发布时间】:2019-02-21 13:53:38
【问题描述】:

嘿,我刚刚开始在 android 中进行 XML 解析。我在工作 在具有这样结构的 xml 上。

        <quran>
        <sura index="113" name="الفلق">
                <aya index="1" text="قُلْ أَعُوذُ بِرَبِّ الْفَلَقِ" bismillah="بِسْمِ اللَّهِ الرَّحْمَنِ الرَّحِيمِ" />
                <aya index="2" text="مِنْ شَرِّ مَا خَلَقَ" />
                <aya index="3" text="وَمِنْ شَرِّ غَاسِقٍ إِذَا وَقَبَ" />
                <aya index="4" text="وَمِنْ شَرِّ النَّفَّاثَاتِ فِي الْعُقَدِ" />
                <aya index="5" text="وَمِنْ شَرِّ حَاسِدٍ إِذَا حَسَدَ" />
            </sura>
            <sura index="114" name="الناس">
                <aya index="1" text="قُلْ أَعُوذُ بِرَبِّ النَّاسِ" bismillah="بِسْمِ اللَّهِ الرَّحْمَنِ الرَّحِيمِ" />
                <aya index="2" text="مَلِكِ النَّاسِ" />
                <aya index="3" text="إِلَهِ النَّاسِ" />
                <aya index="4" text="مِنْ شَرِّ الْوَسْوَاسِ الْخَنَّاسِ" />
                <aya index="5" text="الَّذِي يُوَسْوِسُ فِي صُدُورِ النَّاسِ" />
                <aya index="6" text="مِنَ الْجِنَّةِ وَالنَّاسِ" />
            </sura>
        </quran>

现在在我的第一堂课中,我只想展示一个列表视图 提到了一个 sura 的名字,我已经成功地使用了这个 代码。

 XmlPullParser parser = getResources().getXml(R.xml.quran_arabic);

        while (parser.getEventType() != XmlPullParser.END_DOCUMENT) {
            if (parser.getEventType() == XmlPullParser.START_TAG && parser.getName().equals("sura")) {
                list.add(parser.getAttributeValue(0) + ".\n" + parser.getAttributeValue(1));
            }
            parser.next();
        }

在我的 lisview 中,现在只显示 sura 的名称,我想显示用户将点击的特定 sura 的 aya 标签。 在我的下一个活动中,我正在使用此代码

 XmlPullParser parser = getResources().getXml(R.xml.quran_arabic);

        while (parser.getEventType() != XmlPullParser.END_DOCUMENT) {
            if (parser.getEventType() == XmlPullParser.START_TAG && parser.getName().equals("aya")) {
                list.add(parser.getAttributeValue(0) + ".\n" + parser.getAttributeValue(1));
            }
            parser.next();
        }

但是我得到了所有 aya 标签属性而不是特定的 sura。请帮助我获取那些出现在用户将点击的特定标签上的 aya。我刚刚在 xml 中发布了 2 个 sura 标签,实际上我有 114 个,所以请帮助我使用正确的代码。对不起,我英语不好。帮帮我吧。谢谢:(

【问题讨论】:

    标签: android xml-parsing xmlpullparser


    【解决方案1】:

    如果您想在给定的sura 中获取所有aya 标签,那么您应该编写一个将sura index 作为输入(例如113 或114)并返回所有aya 标签作为输出的方法。

    private List<String> getAllAyaFromSuraIndex(String suraIndex) {
        List<String> list = new ArrayList<>();
    
        XmlPullParser parser = getResources().getXml(R.xml.quran_arabic);
        while (parser.getEventType() != XmlPullParser.END_DOCUMENT) {
            if (parser.getEventType() == XmlPullParser.START_TAG && parser.getName().equals("sura")) {
                String index = parser.getAttributeValue(0);
    
                // Match given sure index
                if (index.equals(suraIndex)) {
                    // Move to first aya tag inside matched sura index
                    parser.next();
    
                    // This loop will exit when it reaches sura end tag </sura>
                    while (parser.getName().equals("aya")) {
                        if (parser.getEventType() == XmlPullParser.START_TAG) {
                            list.add(parser.getAttributeValue(0) + ".\n" + parser.getAttributeValue(1));
                        }
    
                        // Move to next aya tag
                        parser.next();
                    }
    
                    break;
                }
            }
    
            parser.next();
        }
    
        return list;
    }
    

    【讨论】:

      猜你喜欢
      • 2013-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-09
      • 2020-05-21
      • 1970-01-01
      • 2015-05-27
      • 2013-02-10
      相关资源
      最近更新 更多