0

这是只能解析 URI 源的代码。

    package com.example.xmlparserdeneme;

import java.io.IOException;
import java.util.ArrayList;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

import android.app.Activity;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.widget.ListView;

public class MainActivity extends Activity {

    ArrayList<String> titles = new ArrayList<String>();
    Context ctx = this;
    CustomAdapter adapter = null;
    ListView lv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ctx = this;
        new parseXML().execute();

        Log.i("info2", titles.toString());

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    class parseXML extends AsyncTask<String, Void, String> {

        MySaxHandler handler;

        @Override
        protected String doInBackground(String... params) {

            // ((Activity) ctx).setContentView(R.layout.activity_main);

            SAXParserFactory spf = SAXParserFactory.newInstance();
            SAXParser parser = null;
            try {
                parser = spf.newSAXParser();
            } catch (ParserConfigurationException e) {
                e.printStackTrace();
            } catch (SAXException e) {
                e.printStackTrace();
            }

            handler = new MySaxHandler();

            try {

                parser.parse("http://sosyalmedya.co/mobile-feed/", handler);
                // parser.parse("file:///android_asset/DirenisDB.txt", handler);
            } catch (SAXException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

            Log.i("info", titles.toString());

            // Toast.makeText(ctx, "POST", Toast.LENGTH_LONG).show();
            // setAdapter();

            return "a";

        }

        @Override
        protected void onPostExecute(String result) {

            lv = (ListView) findViewById(R.id.listView);
            lv.setAdapter(new CustomAdapter(titles, ctx));
        }

        public ArrayList<String> getArray() {
            return titles;
        }

        public class MySaxHandler extends DefaultHandler {

            StringBuffer chars;

            public void startElement(String uri, String localName,
                    String qName, Attributes atts) {
                chars = new StringBuffer();

            }

            public void endElement(String uri, String localName, String qName)
                    throws SAXException {

                if (localName.equalsIgnoreCase("key"))
                    titles.add(chars.toString());

            }

            public void characters(char ch[], int start, int length) {
                chars.append(new String(ch, start, length));
            }

        }

    }
}

我已经花了将近 6 个小时,但我仍然无法弄清楚。我只想让它解析 this(a file) parser.parse("file:///android_asset/DirenisDB.txt", handler); 而不是 this(URI) parser.parse("http://sosyalmedya.co/mobile-feed/", handler);

如果您能解决我的问题,我将不胜感激。

4

1 回答 1

1

要解析的 json 代码必须在 layout/res/Raw 文件夹中。这是打开资源的代码。

db = parse(getResources().openRawResource(R.raw.database));
于 2013-07-30T15:06:44.093 回答