日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件下載最安全的下載網(wǎng)站、值得信賴的軟件下載站!

      首頁(yè)編程開發(fā)Android → Android開發(fā)使用Dom從網(wǎng)絡(luò)端解析xml文件

      Android開發(fā)使用Dom從網(wǎng)絡(luò)端解析xml文件

      相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:西西整理時(shí)間:2012/12/21 16:04:38字體大小:A-A+

      作者:有夢(mèng)想的小人物點(diǎn)擊:13次評(píng)論:0次標(biāo)簽: xml文件

      • 類型:文本編輯大。1.2M語(yǔ)言:英文 評(píng)分:5.0
      • 標(biāo)簽:
      立即下載

      本程序?qū)崿F(xiàn)了從網(wǎng)絡(luò)端解析xml文件,展示在列表,并實(shí)現(xiàn)點(diǎn)擊進(jìn)入相關(guān)頁(yè)面。

      首先我們創(chuàng)建一個(gè)類,用來(lái)實(shí)現(xiàn)http請(qǐng)求和xml文件節(jié)點(diǎn)的獲取

      public class XMLParser {
      
          // constructor
          public XMLParser() {
      
          }
      
          /**
           * Getting XML from URL making HTTP request
           * @param url string
           * */
          public String getXmlFromUrl(String url) {
              String xml = null;
              try {
                  // defaultHttpClient
                  DefaultHttpClient httpClient = new DefaultHttpClient();
                  HttpPost httpPost = new HttpPost(url);
                  HttpResponse httpResponse = httpClient.execute(httpPost);
                  HttpEntity httpEntity = httpResponse.getEntity();
                  xml = EntityUtils.toString(httpEntity,"utf-8");
              } catch (UnsupportedEncodingException e) {
                  e.printStackTrace();
              } catch (ClientProtocolException e) {
                  e.printStackTrace();
              } catch (IOException e) {
                  e.printStackTrace();
              }
              // return XML
              return xml;
          }
          
          /**
           * Getting XML DOM element
           * @param XML string
           * */
          public Document getDomElement(String xml){
              Document doc = null;
              DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
              try {
      
                  DocumentBuilder db = dbf.newDocumentBuilder();
      
                  InputSource is = new InputSource();
                      is.setCharacterStream(new StringReader(xml));
                      doc = db.parse(is); 
      
                  } catch (ParserConfigurationException e) {
                      Log.e("Error: ", e.getMessage());
                      return null;
                  } catch (SAXException e) {
                      Log.e("Error: ", e.getMessage());
                      return null;
                  } catch (IOException e) {
                      Log.e("Error: ", e.getMessage());
                      return null;
                  }
      
                  return doc;
          }
          
          /** Getting node value
            * @param elem element
            */
           public final String getElementValue( Node elem ) {
               Node child;
               if( elem != null){
                   if (elem.hasChildNodes()){
                       for( child = elem.getFirstChild(); child != null; child = child.getNextSibling() ){
                           if( child.getNodeType() == Node.TEXT_NODE  ){
                               return child.getNodeValue();
                           }
                       }
                   }
               }
               return "";
           }
           /**
            * Getting node value
            * @param Element node
            * @param key string
            * */
           public String getValue(Element item, String str) {        
                  NodeList n = item.getElementsByTagName(str);        
                  return this.getElementValue(n.item(0));
              }
      }

      然后我們創(chuàng)建一個(gè)Activity繼承與ListActivity,在這個(gè)Activity中定義一些節(jié)點(diǎn)。

      public class AndroidXMLParsingActivity extends ListActivity {
      
          // All static variables
          static final String URL = "http://10.0.2.2/biyeshejidata/menu.xml";
          // XML node keys
          static final String KEY_ITEM = "item"; // parent node
          static final String KEY_ID = "id";
          static final String KEY_NAME = "name";
          static final String KEY_COST = "cost";
          static final String KEY_DESC = "description";
          @Override
          public void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.main);
      
              ArrayList<HashMap> menuItems = new ArrayList<HashMap>();
      
              XMLParser parser = new XMLParser();
              String xml = parser.getXmlFromUrl(URL); // getting XML
              Document doc = parser.getDomElement(xml); // getting DOM element
      
              NodeList nl = doc.getElementsByTagName(KEY_ITEM);
              // looping through all item nodes 
              for (int i = 0; i < nl.getLength(); i++) {
                  // creating new HashMap
                  HashMap map = new HashMap();
                  Element e = (Element) nl.item(i);
                  // adding each child node to HashMap key => value
                  map.put(KEY_ID, parser.getValue(e, KEY_ID));
                  map.put(KEY_NAME, parser.getValue(e, KEY_NAME));
                  map.put(KEY_COST, "Rs." + parser.getValue(e, KEY_COST));
                  map.put(KEY_DESC, parser.getValue(e, KEY_DESC));
      
                  // adding HashList to ArrayList
                  menuItems.add(map);
              }
      
              // Adding menuItems to ListView
              ListAdapter adapter = new SimpleAdapter(this, menuItems,
                      R.layout.list_item,
                      new String[] { KEY_NAME, KEY_DESC, KEY_COST }, new int[] {
                              R.id.name, R.id.desciption, R.id.cost });
      
              setListAdapter(adapter);
      
              // selecting single ListView item
              ListView lv = getListView();
      
              lv.setOnItemClickListener(new OnItemClickListener() {
      
                  @Override
                  public void onItemClick(AdapterView<?> parent, View view,
                          int position, long id) {
                      // getting values from selected ListItem
                      String name = ((TextView) view.findViewById(R.id.name)).getText().toString();
                      String cost = ((TextView) view.findViewById(R.id.cost)).getText().toString();
                      String description = ((TextView) view.findViewById(R.id.desciption)).getText().toString();
                      
                      // Starting new intent
                      Intent in = new Intent(getApplicationContext(), SingleMenuItemActivity.class);
                      in.putExtra(KEY_NAME, name);
                      in.putExtra(KEY_COST, cost);
                      in.putExtra(KEY_DESC, description);
                      startActivity(in);
      
                  }
              });
          }
      }

      最后實(shí)現(xiàn)點(diǎn)擊進(jìn)入一個(gè)新的頁(yè)面的Activity。

      public class SingleMenuItemActivity  extends Activity {
          
          // XML node keys
          static final String KEY_NAME = "name";
          static final String KEY_COST = "cost";
          static final String KEY_DESC = "description";
          @Override
          public void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.single_list_item);
              
              // getting intent data
              Intent in = getIntent();
              
              // Get XML values from previous intent
              String name = in.getStringExtra(KEY_NAME);
              String cost = in.getStringExtra(KEY_COST);
              String description = in.getStringExtra(KEY_DESC);
              
              // Displaying all values on the screen
              TextView lblName = (TextView) findViewById(R.id.name_label);
              TextView lblCost = (TextView) findViewById(R.id.cost_label);
              TextView lblDesc = (TextView) findViewById(R.id.description_label);
              
              lblName.setText(name);
              lblCost.setText(cost);
              lblDesc.setText(description);
          }
      }

        相關(guān)評(píng)論

        閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過(guò)難過(guò)
        • 5 囧
        • 3 圍觀圍觀
        • 2 無(wú)聊無(wú)聊

        熱門評(píng)論

        最新評(píng)論

        發(fā)表評(píng)論 查看所有評(píng)論(0)

        昵稱:
        表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
        字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)