0
我想解析XML:http://www.sjc.com.vn/xml/tygiavang.xml 我想要得到的產品:買=「32.800」賣=「33.070」 TYPE =「萬榮SJC 1L」和更新的時間Android的SAXParser的簡單框架
我使用簡單的框架來解析,但我不能得到我想要的元素。 這裏是我的課: ratelist.java
@Root(name = "ratelist", strict = false)
public class Ratelist{
@Attribute
private String updated;
@Element
private String city;
public String getUpdated(){
return updated;
}
public String getCity(){
return city;
}
}
city.java
@Root(name = "city", strict = false)
public class City {
@Attribute
private String name;
@Element
private String item;
public String getName(){
return name;
}
public String getItem(){
return item;
}
}
item.java
@Root(name = "item", strict = false)
public class Item {
@Attribute
private String buy;
@Attribute
private String sell;
@Attribute
private String type;
public String getBuy(){
return buy;
}
public String getSell(){
return sell;
}
public String getType(){
return type;
}
}
Roo_class.java
@Root
public class Root_class {
@Element
private String title;
@Element
private String url;
@Element
private Ratelist ratelist;
public String getTitle(){
return title;
}
public String getUrl(){
return url;
}
public Ratelist getRatelist(){
return ratelist;
}
}
和主.J AVA
public class main extends Fragment {
ListView listView;
String path = "http://www.sjc.com.vn/xml/tygiavang.xml";
MyAsyncTask myAsyncTask;
SwipeRefreshLayout swipeRefreshLayout;
ProgressDialog progressDialog;
ArrayList<HashMap<String, String>> data_listview = new ArrayList<HashMap<String, String>>();
String ngay;
String mua = "";
String ban = "";
String loai = "";
TextView tv_ban, tv_mua, tv_loai, tv_ngay;
Item item;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_city_gold, container, false);
listView = (ListView) view.findViewById(R.id.listView);
tv_ban = (TextView) view.findViewById(R.id.textView2);
tv_mua = (TextView) view.findViewById(R.id.textView3);
tv_loai = (TextView) view.findViewById(R.id.textView4);
tv_ngay = (TextView) view.findViewById(R.id.textView13);
swipeRefreshLayout = (SwipeRefreshLayout) view.findViewById(R.id.swipe_container);
tv_ban.setText(R.string.sell);
tv_mua.setText(R.string.buy);
tv_loai.setText(R.string.type);
if (isNetworkConnected()==true) {
myAsyncTask = new MyAsyncTask();
myAsyncTask.execute();
}else {
Toast.makeText(getActivity(), R.string.requirenetwork, Toast.LENGTH_SHORT).show();
}
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
new CountDownTimer(1000, 500) {
@Override
public void onTick(long millisUntilFinished) {
if (isNetworkConnected() == true) {
myAsyncTask = new MyAsyncTask();
myAsyncTask.execute();
}
}
@Override
public void onFinish() {
swipeRefreshLayout.setRefreshing(false);
if (isNetworkConnected() == false) {
snackbar();
}
}
}.start();
}
});
return view;
}
class MyAsyncTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
data_listview.clear();
progressDialog = ProgressDialog.show(getContext(), getActivity().getResources().getString(R.string.updating), getActivity().getResources().getString(R.string.wait));
}
@Override
protected Void doInBackground(Void... arg0) {
// TODO Auto-generated method stub
try {
URL url = new URL(path);
URLConnection connection = url.openConnection();
InputStream is = connection.getInputStream();
Serializer serializer = new Persister();
Ratelist data = serializer.read(Ratelist.class, is);
ban = item.getSell() + "\n";
mua = item.getBuy() + "\n";
loai = item.getType() + "\n";
//
HashMap<String, String> hashmap = new HashMap<String, String>();
hashmap.put("KEY_ID", ban);
hashmap.put("KEY_NAME", mua);
hashmap.put("KEY_BUY", loai);
data_listview.add(hashmap);
// ngay = data.get();
/* InputStream is2 = connection.getInputStream();
Serializer serializer1=new Persister();
ratelist data1=serializer1.read(ratelist.class,is2);
for (ratelist ratelist:data1.getCity()){
}*/
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
String text = getResources().getString(R.string.update);
tv_ngay.setText(text + ": " + ngay);
ListAdapter adapter = new SimpleAdapter(getActivity(),
data_listview, //du lieu
R.layout.currency_mot_item, //lay out
new String[]{"KEY_ID", "KEY_NAME", "KEY_BUY"}, //from
new int[]{R.id.textView10, R.id.textView11, R.id.textView12}); //to
listView.setAdapter(adapter);
progressDialog.dismiss();
Toast.makeText(getActivity(), ban, Toast.LENGTH_SHORT).show();
}
}
謝謝你的回答。我創建了一個Root類。你可以在第一篇文章中看到它。但我不知道如何解析它們。你能告訴我正確的事 –
更新我的答案。 –
非常感謝拉爾森。有效 –