Hehabr
13 уровень

SAX-парсер

Статья из группы Архив info.javarush
участников
Попробовал запустить код вот из этой статьи: SAX Получил ошибку: java.lang.ClassNotFoundException: org.apache.xerces.parsers.SAXParser В чём тут дело, что не так?
Комментарии (7)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Fry
Уровень 41
25 января 2016, 12:07
либу скачать надо
Alexey90
Уровень 32
25 января 2016, 01:55
исходя из комментария, там надо прописать
com.sun.org.apache.xerces.internal.parsers.SAXParser
в кавычках там где Class.forName
Hehabr
Уровень 13
26 января 2016, 21:48
Если так прописать, то выдаёт ошибку:
java.net.MalformedURLException: unknown protocol: c


А если так:
Class c = Class.forName("http://com.sun.org.apache.xerces.internal.parsers.SAXParser");
то:
java.lang.ClassNotFoundException


— Как же должна эта строка выглядеть, чтобы заработало?
Alexey90
Уровень 32
26 января 2016, 22:15
Class c = Class.forName("com.sun.org.apache.xerces.internal.parsers.SAXParser");
Hehabr
Уровень 13
29 января 2016, 01:50
Заработало!

А какой смысл что в Википедии правильный вариант в комментарии указан, а не непосредственно в коде?

Почему бы его там не поставить было сразу в код как надо, так как работает…



Цитата из Википедии:

// В JDK 5.0 введен этот парсер, и путь такой:
// com.sun.org.apache.xerces.internal.parsers.SAXParser.

Class c = Class.forName("org.apache.xerces.parsers.SAXParser");
Alexey90
Уровень 32
29 января 2016, 01:56
Так не у всех же java 5 и выше, у кого-то более низкая версия
Alexey90
Уровень 32
25 января 2016, 01:45
Этот?

package xml;

import org.xml.sax.*;
import org.xml.sax.helpers.DefaultHandler;

public class SimpleSax extends DefaultHandler {
  private String currentElement = null;

  public static void main(String[] args) {
    try {
      //В JDK 5.0 введен этот парсер, и путь такой: com.sun.org.apache.xerces.internal.parsers.SAXParser.
      Class c = Class.forName("org.apache.xerces.parsers.SAXParser");
      XMLReader reader = (XMLReader)c.newInstance();
      SimpleSax ss = new SimpleSax();
      reader.setContentHandler(ss);
      reader.parse("order.xml");
    } catch(Exception e){System.out.println(e);}
  }

  public void startElement(String uri, String local_name, String raw_name, Attributes amap) throws SAXException {
    currentElement = local_name;
    System.out.println("start " + local_name + " found ");
  }
  public void endElement(String uri, String local_name, String raw_name) throws SAXException {
    System.out.println("end " + local_name + " found");
  }

  public void startDocument() throws SAXException {
   System.out.println("start document");
  }

  public void endDocument() throws SAXException {
   System.out.println("end document");
  }

  public void characters(char[] ch, int start, int length) throws SAXException {
   String value = new String(ch,start,length);
   if (!Character.isISOControl(value.charAt(0))) {
    System.out.println("characters " + value + " found " + currentElement);
   }
  }
}