【问题标题】:XML Parsing in Android getAttributeValue() returns null valueAndroid getAttributeValue() 中的 XML 解析返回空值
【发布时间】:2015-09-10 07:18:56
【问题描述】:

我正在做一个应用程序,我必须使用 XMLPullParser 进行解析。 但是我不能使用 XMLPullParser 的getAttributeValue(null,"value") 来计算温度和湿度的值。

代码:

public void parseXMLAndStoreIt(XmlPullParser myParser) {
        int event;
        String text=null;

        try {
            event = myParser.getEventType();

            while (event != XmlPullParser.END_DOCUMENT) {
                String name=myParser.getName();

                switch (event){
                    case XmlPullParser.START_TAG:
                        break;

                    case XmlPullParser.TEXT:
                        text = myParser.getText();
                        break;

                    case XmlPullParser.END_TAG:
                        Log.i(" name:",name);
                        if(name.equals("country")){
                            country = text;

                        }

                        else if(name.equals("humidity")){
                            Log.i("humidity:",name);
                            humidity = myParser.getAttributeValue(null,"value");
                        }

                        else if(name.equals("pressure")){
                            pressure = myParser.getAttributeValue(null,"value");
                        }

                        else if(name.equals("temperature")){
                            temperature = myParser.getAttributeValue(null,"value");
                        }

                        else{
                        }
                        break;
                }
                event = myParser.next();
            }
            parsingComplete = false;
        }

        catch (Exception e) {
            e.printStackTrace();
        }
    }

【问题讨论】:

    标签: android xml-parsing


    【解决方案1】:

    第一个答案解决了湿度,压力和温度的问题,但导致国家字段为空白。 下面的代码解决了这个问题:

    public void parseXMLAndStoreIt(XmlPullParser myParser) {
        int event;
        String text=null;
        try {
            event = myParser.getEventType();
            while (event != XmlPullParser.END_DOCUMENT) {
                String name=myParser.getName();
                switch (event){
    
                    case XmlPullParser.START_TAG:
    
                        if ( !name.equals("country"))
                            text = myParser.getText();
    
                        if(name.equals("humidity")){
                            humidity = myParser.getAttributeValue(null,"value");
                        }
                        else if(name.equals("pressure")){
                            pressure = myParser.getAttributeValue(null,"value");
                        }
                        else if(name.equals("temperature")){
                            temperature = myParser.getAttributeValue(null,"value");
                        }
                        else{
                        }
                        break;
    
                    case XmlPullParser.TEXT:
    
                        text = myParser.getText();
                        break;
    
                    case XmlPullParser.END_TAG:
    
                        if(name.equals("country")){
                            country = text;
                        }
                        else {
    
                        }
                        break;
    
    
                }
                event = myParser.next();
            }
            parsingComplete = false;
        }
    
        catch (Exception e) {
            e.printStackTrace();
        }
    }
    

    【讨论】:

      【解决方案2】:

      这样就可以解决问题了

      public void parseXMLAndStoreIt(XmlPullParser myParser) {
          int event;
          String text=null;
          try {
              event = myParser.getEventType();
              while (event != XmlPullParser.END_DOCUMENT) {
                  String name=myParser.getName();
                  switch (event){
                      case XmlPullParser.START_TAG:
                          text = myParser.getText();
      
                          if(name.equals("country")){
                              country = text;
                          }
                          else if(name.equals("humidity")){
                              humidity = myParser.getAttributeValue(null,"value");
                          }
                          else if(name.equals("pressure")){
                              pressure = myParser.getAttributeValue(null,"value");
                          }
                          else if(name.equals("temperature")){
                              temperature = myParser.getAttributeValue(null,"value");
                          }
                          else{
                          }
                          break;
                      case XmlPullParser.END_TAG:
                  }
                  event = myParser.next();
              }
              parsingComplete = false;
          }
      
          catch (Exception e) {
              e.printStackTrace();
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-18
        • 1970-01-01
        • 2013-12-11
        • 2016-10-22
        • 1970-01-01
        相关资源
        最近更新 更多