当前位置: 代码迷 >> Android >> DOM解析相关,大牛帮小弟我看看这段代码哪里有错
  详细解决方案

DOM解析相关,大牛帮小弟我看看这段代码哪里有错

热度:71   发布时间:2016-04-28 04:56:46.0
DOM解析相关,大牛帮我看看这段代码哪里有错
本帖最后由 unloserv 于 2014-07-04 17:22:41 编辑

public void getSettings(){
     File file=new File(Environment.getExternalStorageDirectory().toString()
     +File.separator
     +"Text"
     +File.separator
     +"PortSettings.xml");
     if(!file.exists()){
     return;
     }
    
     DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
     DocumentBuilder builder = null;
     try{
     builder=dbf.newDocumentBuilder();
     }
     catch(ParserConfigurationException e){
     e.printStackTrace();
     }
    
     Document doc=null;
     try {
     doc=builder.parse(file);
     }
     catch(SAXException e){
     e.printStackTrace();
     }
     catch(IOException e){
     e.printStackTrace();
     }
    
     TextView tv = (TextView)findViewById(R.id.textView1);
     NodeList settings=doc.getElementsByTagName("settings");
     tv.setText(settings.getLength());
        //错误在红字附近!!
        //直接运行settings.getLength();没有问题不会报错
        //运行tv.setText(settings.getLength());会闪退
        //不知道错在哪里了! 高手帮我看看哪里有问题

     /*
     for(int i=0;i<settings.getLength();i++){
     Element e=(Element)settings.item(i);
     tv1.setText(" port "+e.getElementsByTagName("port").item(0).getFirstChild().getNodeValue()
     +" buard "+e.getElementsByTagName("buard").item(0).getFirstChild().getNodeValue()
     +" checkbit "+e.getElementsByTagName("checkbit").item(0).getFirstChild().getNodeValue()
     +" databit "+e.getElementsByTagName("databit").item(0).getFirstChild().getNodeValue()
     +" stopbit "+e.getElementsByTagName("stopbit").item(0).getFirstChild().getNodeValue()
     );
     }*/
    
    }



xml文件内容如下


<?xml version="1.0" encoding="GBK"?>
<portsettings>
<settings>
<port>1</port>
<buard>1200</buard>
<checkbit>NONE</checkbit>
<databit>5</databit>
<stopbit>1</stopbit>
</settings>
</portsettings>


为什么会闪退啊????
------解决方案--------------------
tv.setText(settings.getLength()) 这个方法不能设置整形,你的getLength()是整形。
这样写
tv.setText(settings.getLength() + "")  变成字符串即可。
  相关解决方案