Как отобразить различные проанализированные файлы XML в Android? - PullRequest
1 голос
/ 22 октября 2011

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

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.saxmain);

    ScrollView MyScrollView = new ScrollView(this);
    LinearLayout layout = new LinearLayout(this);

    layout.setOrientation(LinearLayout.VERTICAL);
    MyScrollView.addView(layout);

    try {

        /** Handling XML */
        SAXParserFactory spf = SAXParserFactory.newInstance();
        SAXParser sp = spf.newSAXParser();
        XMLReader xr = sp.getXMLReader();

        /** Send URL to parse XML Tags */
        URL sourceUrl = new URL(
                "http://192.168.1.31:81/Udayavani/android/weather/weather.php?city=mumbai");

        /** Create handler to handle XML Tags ( extends DefaultHandler ) */
        MyXMLHandler myXMLHandler = new MyXMLHandler();
        xr.setContentHandler(myXMLHandler);
        xr.parse(new InputSource(sourceUrl.openStream()));

    } catch (Exception e) {
        System.out.println("XML Pasing Excpetion = " + e);
    }

 /* Get result from MyXMLHandler TagList Object */
    taglist = MyXMLHandler.sitesList;



    for (int i = 0; i <26; i++) {
        texts[i] = new TextView(this);
        texts[i].setText(""+i);
        texts[i].setTypeface(kannada);
        layout.addView(texts[i]);


    }
    /** Set the result text in textview and add it to layout */
        texts[0].setText("Current= "+taglist.getCurrent().get(0));
        texts[1].setText("Temp= "+taglist.getTemp().get(0));
        texts[2].setText("Humidity= "+taglist.getHumidity().get(0));
        texts[3].setText(""+taglist.getWind_condition().get(0));
        texts[4].setText(""+taglist.getIcon().get(0));
       int j=0; 
       int k=5;
        while(k<20){
        texts[k].setText("----------------------------------"); 
        k++;
        texts[k].setText("Day= "+taglist.getDay().get(j));
        k++;
        texts[k].setText("Condition= "+taglist.getCondition().get(j));
        k++;
        texts[k].setText("Low= "+taglist.getLow().get(j));
        k++;
        texts[k].setText("High= "+taglist.getHigh().get(j));
        k++;
        texts[k].setText("Icon= "+taglist.getIcon().get(j));
        k++;
        j++;
        if(j>=5){
            j=0;
               }
             }


    /** Set the layout view to display */
    setContentView(MyScrollView);

  }
    }

У меня вопрос к ТАК, может ли кто-нибудь помочь мне получить разобранный файл XML для разных городов? У меня есть URL-адрес почти для всех городов, и я могу получить его, просто изменив название города в конце своего URL-адреса (скажем, weather.php? City = auckland), которое я упомянул в своем коде. Я начинаю с У ListView и у меня около 20-30 городов, которые хранятся в ListView как list-content. Каждый раз, когда я нажимаю на конкретное место, я хочу получить проанализированный файл XMl этого конкретного города.

Кто-нибудь, пожалуйста, направьте меня в этом.

Спасибо

РЕДАКТИРОВАНИЕ:

XML-содержимое:

            <?xml version="1.0" encoding="UTF-8"?>
  <weather>
<current_conditions>
    <current>ಹೊಗೆಯಾವೃತ</current>
    <temp>95</temp>
    <humidity>Humidity: ೨೩%</humidity>
    <wind_condition>Wind: ಪೂ at 13 km/h</wind_condition>
    <icon>smoke.gif</icon>
</current_conditions>
<forecast_information>
    <forecast0>
        <day>ಶನಿ.</day>
        <condition>ಬಹುಪಾಲು ಬಿಸಿಲು</condition>
        <low>25</low>
        <high>36</high>
        <icon>mostly_sunny.gif</icon>
    </forecast0>
    <forecast1>
        <day>ರ.</day>
        <condition>ಶುಭ್ರ</condition>
        <low>25</low>
        <high>35</high>
        <icon>sunny.gif</icon>
    </forecast1>
    <forecast2>
        <day>ಸೋ.</day>
        <condition>ಬಹುಪಾಲು ಬಿಸಿಲು</condition>
        <low>25</low>
        <high>36</high>
        <icon>mostly_sunny.gif</icon>
    </forecast2>
    <forecast3>
        <day>ಮಂ.</day>
        <condition>ಬಹುಪಾಲು ಬಿಸಿಲು</condition>
        <low>26</low>
        <high>33</high>
        <icon>mostly_sunny.gif</icon>
    </forecast3>
</forecast_information>

Ответы [ 2 ]

2 голосов
/ 24 октября 2011

Я получил решение. Я объявляю массив мест с именем StateNames []. И из своего класса ListView я передаю putExtra ("id", pos) в класс, где я объявил свой массив, и я получаю доступэто через следующее:

String actualUrl="http://192.168.1.31:81/Udayavani/android/weather/weather.php?city=";     
private String[] StateNames={..,..,..};
//In OnCreate()
    Bundle b = getIntent().getExtras();
    id= b.getInt("id");
    String myURL=actualUrl+StateNames[id];
   try {

        /** Handling XML */
        SAXParserFactory spf = SAXParserFactory.newInstance();
        SAXParser sp = spf.newSAXParser();
        XMLReader xr = sp.getXMLReader();

        /** Send URL to parse XML Tags */
        URL sourceUrl = new URL(myURL);

        /** Create handler to handle XML Tags ( extends DefaultHandler ) */
        MyXMLHandler myXMLHandler = new MyXMLHandler();
        xr.setContentHandler(myXMLHandler);
        xr.parse(new InputSource(sourceUrl.openStream()));

    } catch (Exception e) {
        System.out.println("XML Pasing Excpetion = " + e);
    }
0 голосов
/ 22 октября 2011

Используйте просмотр списка вместо просмотра прокрутки. Используя метод onListItemClick () представления списка, щелкните конкретный элемент списка (город в вашем случае) и передайте его в качестве параметра в функцию ur (которая должна иметь возможность получить XML-файл города, который вы передали в URL). Для получения дополнительной информации о представлении списка см. Это

...