SAX-Parser выдает UnknownHostException - PullRequest
       27

SAX-Parser выдает UnknownHostException

0 голосов
/ 19 апреля 2011

Я написал рабочий XML-Saxparser несколько недель назад. По некоторым причинам, я не знаю почему, это больше не работает, и я не могу думать о том, что я сделал на тех классах. когда я смотрю в отладчик, последнее, что работает, это URL url = new URL("http://hammerman.bplaced.net/Objekteingabe1.xml");

строка xr.parse(new InputSource(url.openStream()));, кажется, выбрасывает IOException. В подробностях для «e» в предложении catch указано «UnknownHostException» или «Host is unresolved: ...» stackTrace: null.

Как я уже сказал, я действительно не знаю, что произошло, поэтому я думаю, что где-то допустил глупую ошибку или удалил строку. Но я искал часы сейчас, я просто не могу его найти. Надеюсь, кто-нибудь может мне помочь.

Большое спасибо. Fabian

Мой Readerhelper выглядит следующим образом

try {
        SAXParserFactory spf = SAXParserFactory.newInstance();
        sp = spf.newSAXParser();
        XMLReader xr = sp.getXMLReader();
        handler = new Dokukmentenhandler();
        xr.setContentHandler(handler);
        URL url = new URL("http://hammerman.bplaced.net/Objekteingabe1.xml");

        xr.parse(new InputSource(url.openStream()));
//      Textobjekte = handler.Textobjekte;
//    Phasen_anzahl = handler.Phasen_Counter;

    } catch (ParserConfigurationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SAXException e) {
        // TODO Auto-generated catch block

        e.printStackTrace();
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block

        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block

        e.printStackTrace();
    }

и мой обработчик

@Override
  public void startDocument() throws SAXException
  {

  }

  @Override
  public void startElement(String namespaceURI, String localName, String tagName, Attributes attributes) throws SAXException
  {
      // lege ein erstes dData objekt an
      if (localName.equals("tData")) {
        aktuell = new Textobjekt();
        // damit das objekt existiert
        currentVal = "";
    }
        // alle 4 Sensorarten werden abgefangen
        if (localName.equals("Realer_Sensor")) {
            realerSensor = true;
            op = new Option();
        }else if (localName.equals("Normalverteilung")) {
            normalverteilung = true;
            op = new Option();
            op.Sensor_name= "Normalverteilung";
        }else if (localName.equals("Bernoulliverteilung")) {
            bernoulli = true;
            op = new Option();
            op.Sensor_name= "Bernoulliverteilung";
        }else if (localName.equals("Gleichverteilung")) {
            gleichverteilung = true;
            op = new Option();
            op.Sensor_name= "Gleichverteilung";
        }
  }
  @Override
  public void endElement(String namespaceURI, String localName, String tagName) throws SAXException
  {
      if (localName.equals("Variablen_Name")) {
        aktuell = new Textobjekt();
        aktuell.Variablenname = currentVal;
        Textobjekte.add(aktuell);
    }else if (localName.equals("Phasenanzahl")) {
        Phasen_Counter = Integer.parseInt(currentVal);

    }else if (localName.equals("Initialwert")) {
        aktuell.Initialwert = Float.parseFloat(currentVal);
    }
    // alle 4 Sensorarten werden abgefangen, die booleans geschlossen und die optionen hinzugefuegt
    else if (localName.equals("Realer_Sensor")) {
        realerSensor = false;
        aktuell.Optionenliste.add(op);
    }else if (localName.equals("Normalverteilung")) {
        normalverteilung = false;
        aktuell.Optionenliste.add(op);
    }else if (localName.equals("Bernoulliverteilung")) {
        bernoulli = false;
        aktuell.Optionenliste.add(op);
    }else if (localName.equals("Gleichverteilung")) {
        gleichverteilung = false;
        aktuell.Optionenliste.add(op);
    }   
    else if (localName.equals("Sensor_Name")) {

            op.Sensor_name = currentVal;

    }   
    else if (localName.equals("Parameter")) {
        if (realerSensor) {
            float f = Float.parseFloat(currentVal);
            op.list.add(f);
        }

    }else if (localName.equals("Nu")) {
        if (normalverteilung) {
            float f = Float.parseFloat(currentVal);
            op.list.add(f);
        }

    }else if (localName.equals("sigma")) {
        if (normalverteilung) {
            float f = Float.parseFloat(currentVal);
            op.list.add(f);
        }
    }
    else if (localName.equals("Pi")) {
        if(bernoulli){
            float f = Float.parseFloat(currentVal);
            op.list.add(f);
        }
    }
    else if (localName.equals("Untere_Wertegrenze")) {
        if (gleichverteilung) {
            float f = Float.parseFloat(currentVal);
            op.list.add(f);
        }
    }
    else if (localName.equals("Obere_Wertegrenze")) {
        if (gleichverteilung) {
            float f = Float.parseFloat(currentVal);
            op.list.add(f);
        }
    }
    // Ende der Optionenliste  


    else if (localName.equals("Eventvorkommen")) {
        aktuell.Eventvorkommen = currentVal;
    }
    else if (localName.equals("Bezugsart")) {
        aktuell.Bezugsart = currentVal;
    }
    else if (localName.equals("Eventart")) {
        aktuell.Eventart = currentVal;
    }
    else if (localName.equals("Ueberschreitungswert")) {
        float f = Float.parseFloat(currentVal);
        aktuell.Ueberschreitungswert = f;
    }
    else if (localName.equals("Auswirkung")) {
        float f = Float.parseFloat(currentVal);
        aktuell.Auswirkung = f;
    }
    else if (localName.equals("Objektname")) {
        re = new Referenz();
        re.Objektname = currentVal;
    }
    else if (localName.equals("Referenzwert")) {
        float f = Float.parseFloat(currentVal);
        re.Referenzwert = f;
        aktuell.referenzliste.add(re);
    }


  }

  @Override
  public void characters(char[] ch, int start, int length)
  throws SAXException {
      if (length > 0) {
         currentVal = new String(ch,start,length);
    }
  }   
}

Ответы [ 4 ]

1 голос
/ 25 июня 2012

Запомните права пользователя Интернета в манифесте.

uses-permission android:name="android.permission.INTERNET"
0 голосов
/ 19 апреля 2011

Если вы не внесли изменения во время ввода, ссылки и файлы XSD, на которые есть ссылки, верны, поэтому проблема не возникает (я могу загрузить их в своем браузере).

Скорее всего, это проблема с сетевым подключением на тестовом устройстве, поскольку оно не может разрешить имя хоста.

0 голосов
/ 22 апреля 2011

Исправление по Фабиану:

казалось, что ответ Филиса был верным (тоже?), Он работал, когда я делал, как упоминалось ранее (delete xsi: noNamespaceSchemaLocation = "Objekteingabe.xsd), но это могло произойти случайно. Для всех, у кого такая же проблема: Хорошим вариантом является замена тестового устройства.

У меня снова возникла та же проблема, и запуск другого эмулятора решил мою проблему. извините за путаницу здесь !!!

0 голосов
/ 19 апреля 2011

Похоже, что http://hammerman.bplaced.net/Objekteingabe1.xml не может быть достигнуто.Можете ли вы позвонить по этому адресу из браузера?

Если это так, второй вариант может заключаться в том, что анализатор видит

<Rahmeneingabe xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:noNamespaceSchemaLocation="Objekteingabe.xsd">

и пытается загрузить XSD и не удается.

Обычно вы должны получить имя хоста, которое не удалось разрешить в трассировке стека.

...