0

I use Xmlpullparser to parse xml from Asset folder
this is code

public class FragmentImg extends Fragment {
static final String KEY_EMP = "emp";
static final String KEY_NAME = "name";
static final String KEY_GENDER = "gender";
static final String KEY_AGE = "age";
List<HashMap<String,String>> imgHashmap;
List<ClassImg> imgList = null;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_img, container, false);
    ImgActivity activity = (ImgActivity) getActivity();
    String uri = "list_img.xml";
    GridView gv_img = (GridView)view.findViewById(R.id.gridViewImg);
    try {
        XmlPullParserImg parser_Img = new XmlPullParserImg();
        imgList = parser_Img.parse(getActivity().getAssets().open(uri));
        BinderDataImg bd_img = new BinderDataImg(getActivity(), imgHashmap);
        gv_img.setAdapter(bd_img);
        gv_img.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
                Intent i = new Intent();
                i.setClass(getActivity(), ImgDetail.class);
                startActivity(i);
            }
        });
    } catch (IOException e) {
        e.printStackTrace();
    }
    return view;
}
public class XmlPullParserImg {
    private ClassImg c_i;
    private String text;
    public XmlPullParserImg() {
        danhsachList = new ArrayList<ClassImg>();        }
    public List<ClassImg> parse(InputStream is) {
        XmlPullParserFactory factory = null;
        XmlPullParser parser = null;
        try {
            imgHashmap = new ArrayList<HashMap<String,String>>();
            HashMap<String,String> map = null;
            factory = XmlPullParserFactory.newInstance();
            factory.setNamespaceAware(true);
            parser = factory.newPullParser();
            parser.setInput(is, null);
            int eventType = parser.getEventType();
            while (eventType != XmlPullParser.END_DOCUMENT) {
                String tagname = parser.getName();
                switch (eventType) {
                    case XmlPullParser.START_TAG:
                        if (tagname.equalsIgnoreCase("KEY_EMP")) {
                            c_i = new ClassImg();
                            map = new HashMap<String,String>();
                        }
                        break;
                    case XmlPullParser.TEXT:
                        text = parser.getText();
                        break;
                    case XmlPullParser.END_TAG:
                        if (tagname.equalsIgnoreCase("KEY_EMP")) {
                            imgList.add(c_ds);
                            imgHashmap.add(map);
                        } else if (tagname.equalsIgnoreCase(KEY_NAME)) {
                            c_i.setName(text);
                            map.put(KEY_NAME, text);
                        } else if (tagname.equalsIgnoreCase(KEY_GENDER)) {
                            c_i.setGender(text);
                            map.put(KEY_GENDER, text);
                        } else if (tagname.equalsIgnoreCase(KEY_AGE)) {
                            c_i.setAge(text);
                            map.put(KEY_AGE, text);
                        break;
                    default:
                        break;
                }
                eventType = parser.next();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return imgList;
    }
}

}

Everything is ok, and after that, i upload xml to dropbox.
this is url https://www.dropbox.com/s/lh2ucpbvpqloa3e/list_img.xml
how to parse it with my code?
thank you for reading.

2
  • What is the issue? Did you get any error? Commented May 26, 2016 at 11:21
  • I want parse it from url Commented May 27, 2016 at 2:02

1 Answer 1

0

Try like this

URL url=new URL("https://www.dropbox.com/s/lh2ucpbvpqloa3e/list_img.xml");
HttpURLConnection http=(HttpURLConnection)url.openConnection();
http.setDoInput(true);
http.connect();
InputStream is=http.getInputStream();

After that you can assign inputstream to setData() function

  parser.setInput(is, null);

And rest of the code you already written

Sign up to request clarification or add additional context in comments.

4 Comments

error in HttpUrlConnection , import something else?
you have to add import java.net.HttpURLConnection;
I get error java.lang.RuntimeException: Unable to start activity ComponentInfo android.os.NetworkOnMainThreadException
You cant directly do networking operation in activity(main UI thread).For that you have to define seperate java class that extends AsyncTask and override doInBackground() method,inside that do networking operation or second prefered way of doing networking is by using volley networking library

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.