2016-05-26 2 views
0

Я использую Xmlpullparser для синтаксического анализа XML из папки Asset
это кодандроид использование xmlpullparser синтаксического анализа XML из URL

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; 
    } 
} 

}

Все нормально, и после этого, я загрузить XML в раздаточной.
это адрес https://www.dropbox.com/s/lh2ucpbvpqloa3e/list_img.xml
как разобрать его с помощью моего кода?
спасибо, что посмотрели.

+0

Что такое проблема? У вас возникли какие-либо ошибки? –

+0

Я хочу разобрать его с url – abcd1234

ответ

0

Try как этот

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(); 

После этого вы можете назначить InputStream для УстановитьДанные функции()

parser.setInput(is, null); 

И остальная часть кода вы уже писали

+0

Ошибка в HttpUrlConnection, импортировать что-то еще? – abcd1234

+0

вам нужно добавить импорт java.net.HttpURLConnection; –

+0

Я получаю ошибку java.lang.RuntimeException: Невозможно запустить Activity ComponentInfo android.os.NetworkOnMainThreadException – abcd1234