2013-05-07 4 views
0

Я пытаюсь разобрать конкретные части локального XML, используя pull-parsing, однако я не уверен, как я прочитал эти части. Я использую код:Pull Parsing локальный файл XML в Android

package com.example.xmltest; 


import java.io.IOException; 
import org.xmlpull.v1.XmlPullParser; 
import org.xmlpull.v1.XmlPullParserException; 
import android.app.Activity; 
import android.content.res.Resources; 
import android.content.res.XmlResourceParser; 
import android.os.Bundle; 
import android.widget.TextView; 

public class MainActivity extends Activity { 
    @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      TextView myXmlContent = (TextView)findViewById(R.id.xml_tv); 
      String stringXmlContent; 

      stringXmlContent = getAllXML(); 
      myXmlContent.setText(stringXmlContent); 

     } 

     public String getAllXML(){ 

      Activity activity = this; 
      String str = ""; 

      Resources res = activity.getResources(); 
      XmlResourceParser xpp = res.getXml(R.xml.ensaheehint); 

      try { 
       xpp.next(); 
       int eventType = xpp.getEventType(); 
       System.out.println("eventType : " + eventType); 
       while (eventType != XmlPullParser.END_DOCUMENT) 
       { 
        if(eventType == XmlPullParser.START_DOCUMENT){ 
         str += "nXML Parsing Starting...n"; 
        } 
        else if(eventType == XmlPullParser.START_TAG) 
        { 

         eventType = xpp.next(); 
         if(eventType == XmlPullParser.TEXT){ 
          String text = xpp.getName(); 
          str += "**TEXT: "+text; 
         } 


        } 
        else if(eventType == XmlPullParser.END_TAG) 
        { 
         str += "nending tag: "+xpp.getName(); 
        } 
        else if(eventType == XmlPullParser.TEXT) 
        { 
         str += "nvalue : "+xpp.getText(); 
        } 
        eventType = xpp.next(); 
       } 
       str += "nnXML parsing Ending......"; 

     } catch (XmlPullParserException e) { 
       e.printStackTrace(); 
     } catch (IOException e) { 
       e.printStackTrace(); 
     } 
     return str; 
    } 

    } 

Ниже то, что мой файл XML выглядит следующим образом: Я пытаюсь получить доступ к одной текстовой строке, расположенной в аяте в то время.

<quran> 
<sura index="1" name="الفاتحة"> 
    <aya index="1" text="In the name of Allah, the Entirely Merciful, the Especially Merciful."/> 
    <aya index="2" text="[All] praise is [due] to Allah, Lord of the worlds -"/> 
    <aya index="3" text="The Entirely Merciful, the Especially Merciful,"/> 
    <aya index="4" text="Sovereign of the Day of Recompense."/> 
    <aya index="5" text="It is You we worship and You we ask for help."/> 
    <aya index="6" text="Guide us to the straight path -"/> 
    <aya index="7" text="The path of those upon whom You have bestowed favor, not of those who have evoked [Your] anger or of those who are astray."/> 
</sura> 

ответ

0

Если я правильно понимаю, проблема в том, что вы не имеете никакого значения в своем XML. Однако у вас есть теги с атрибутами.

Ex:

<aya index="6" text="Guide us to the straight path -"/> 

не то же самое, как:

<aya index="6">Guide us to the straight path -"</aya> 

последнего из этих двух вероятно, будет работать с вашим кодом. Я думаю, что вы хотите прочитать атрибут text, а не значение тега.

Дополнительную информацию о том, как получить атрибуты here, можно найти здесь.

Надеюсь, это поможет.

+0

Вы правы, думая, что мне нужно прочитать ** текстовый атрибут ** для каждого aya, но мне нужно сделать это поисковым способом. Так, например, если пользователь вводит 2:34, это означает, что это вернет строку, присутствующую во второй суре, в текстовом атрибуте aya с атрибутом индекса 34. Это делает это более ясным? –

+0

Ага, теперь я понимаю. Проверьте атрибут индекса для сур-узла, если он 2 ищет атрибут индекса для 25 узла aya. Я думаю, что это должно быть довольно прямолинейно. Кажется, у вас хорошая база для создания. Если я ничего не пропустил. :-) – Qben

+0

Спасибо большое, извините, прочь ненадолго! –