zoukankan      html  css  js  c++  java
  • Android数据存储之DOM解析XML文件(读取部分)

    此程序其实是在上一版输出部分项目中再新建一个Activity用来读取xml文件:

    Activity文件代码如下:

    View Code
    public class ReadXmlActivity extends Activity {
        
        private TextView idInfoText = null;
        private TextView nameInfoText = null;
        private Button readXmlBtn = null;
        
        // 操作XML文件的准备
        private File file = null;
        private DocumentBuilderFactory docBuilderFactory = null;
        private DocumentBuilder docBuilder = null;
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            // 载入为读取xml文件而写的layout布局
            super.setContentView(R.layout.xml_reader);
            
            idInfoText = (TextView) findViewById(R.id.idInfoText);
            nameInfoText = (TextView) findViewById(R.id.nameInfoText);
            readXmlBtn = (Button) findViewById(R.id.readXmlBtn);
            
            readXmlBtn.setOnClickListener(new ReadXmlBtnListener());
        }
        
        private class ReadXmlBtnListener implements OnClickListener {
    
            @Override
            public void onClick(View v) {
                // 首先调用检测储存环境的方法
                if(!ReadXmlActivity.this.CheckEnvironment()) {
                    return;
                } else {
                    // 生成XML的方法
                    ReadXMLFile();
                }
            }
            
        }

    检测储存环境方法代码与输出部分中完全相同,这里不再写出代码了。

    读取xml文件的方法:

    View Code
        /* 读取XML的方法 */
        private void ReadXMLFile() {
            docBuilderFactory = DocumentBuilderFactory.newInstance();
            try {
                docBuilder = docBuilderFactory.newDocumentBuilder();
                Document doc = docBuilder.parse(file);
                // 获取所有节点名为person的节点列表
                NodeList nodes = doc.getElementsByTagName("person"); 
                for (int i = 0; i < nodes.getLength(); i++) {
                    // 遍历列表,要注意此"e"节点是<person>节点
                    Element e = (Element) nodes.item(i);
                    // getFirstChild()为获取文本节点
                    ReadXmlActivity.this.idInfoText.setText(e.getElementsByTagName("id").item(0).getFirstChild().getNodeValue());
                    ReadXmlActivity.this.nameInfoText.setText(e.getElementsByTagName("name").item(0).getFirstChild().getNodeValue());
                }
            } catch (ParserConfigurationException e) {
                e.printStackTrace();
            } catch (SAXException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    效果:

  • 相关阅读:
    【项目】项目75
    【项目】项目74
    【项目】项目73
    【项目】项目72
    【项目】项目71
    【项目】项目70
    【项目】项目69
    【项目】项目68
    【项目】项目67
    .Net随笔:解决VS2008,重新生成解决方案,很慢
  • 原文地址:https://www.cnblogs.com/moka/p/3067357.html
Copyright © 2011-2022 走看看