正在使用 XmlPullParser 为特定标记解析 XML?
Parsing XML using XmlPullParser for specific tags?
嘿,我刚刚开始在 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>
现在,在我的第一个 class 中,我只想显示一个列表视图,其中
提到了一个 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 标签。
在我的下一个 activity 中,我将使用此代码
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 个,所以请帮助我使用正确的代码。对不起,我的英语不好。帮帮我吧。谢谢:(
如果你想在给定的 sura
中获取所有 aya
标签,那么你应该编写一个将 sura index
作为输入的方法,例如 113 或 114 和 return 所有 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;
}
嘿,我刚刚开始在 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>
现在,在我的第一个 class 中,我只想显示一个列表视图,其中 提到了一个 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 标签。 在我的下一个 activity 中,我将使用此代码
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 个,所以请帮助我使用正确的代码。对不起,我的英语不好。帮帮我吧。谢谢:(
如果你想在给定的 sura
中获取所有 aya
标签,那么你应该编写一个将 sura index
作为输入的方法,例如 113 或 114 和 return 所有 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;
}