XML-парсинг SAX
От: alex-ikar Россия  
Дата: 09.10.06 15:47
Оценка:
Всем привет!

Вот делаю первые шаги в обработке xml-файлов..
Времени в обрез, из-за этого спешу, ну и естессна (для меня по крайней мере) что нихрена ниче не понятно...

Вот пример взятый мною с "http://www.java2s.com/Code/Java/XML/ParsingXMLFileswithSAX.htm"

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class xml {

  public static void main(String args[]) {

    if (args.length != 1) {
      System.err.println("Usage: java NameLister xmlfile.xml");
      System.exit(-1);
    }

    try {

      SAXParserFactory factory = SAXParserFactory.newInstance();
      SAXParser saxParser = factory.newSAXParser();

      DefaultHandler handler = new DefaultHandler() {
        boolean name = false;

        public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
          if (qName.equalsIgnoreCase("NAME")) {
            name = true;
          }
        }

        public void characters(char ch[], int start, int length) throws SAXException {
          if (name) {
            System.out.println("Name: "
                + new String(ch, start, length));
            name = false;
          }
        }
      };

      saxParser.parse(args[0], handler);
      
    } catch (Exception e) {
      e.printStackTrace();
    }
  }


Все как-бы чудесно, но мне не понятно следующее:
В доке для параметров метода "startElement" написано следующее:

uri — The Namespace URI, or the empty string if the element has no Namespace URI or if Namespace processing is not being performed.
localName — The local name (without prefix), or the empty string if Namespace processing is not being performed.
qName — The qualified name (with prefix), or the empty string if qualified names are not available.
attributes — The attributes attached to the element. If there are no attributes, it shall be an empty Attributes object.

1) Какие из этих параметров мне следует заполнять а какие нет?
2) О каких префиксах тут говорится? И что за "The Namespace URI"?
3) Что подразумевается здесь под атрибутами (attributes attached to the element)?
4) Вызывать этот метод нужно сразу после
saxParser.parse(args[0], handler);
или между ними надо выполнить еще набор каких-либо действий... ?

Вот например есть xml-файл подобного вида:
<PHONEBOOK>
<PERSON>
<NAME>Green</NAME>
<EMAIL>green@yourserver.com</EMAIL>
<TELEPHONE>9001-999-201</TELEPHONE>
<WEB>www.java.com</WEB>
</PERSON>
</PHONEBOOK>

Мне нужно выдрать из этого файла значения всех его элементов..

Если у кого хватит терпения объяснить на примере — спасибо, если кто хотябы "пнет" меня в нужную сторону — тоже буду примного благодарен ...
Re: XML-парсинг SAX
От: kan Великобритания  
Дата: 09.10.06 17:08
Оценка:
alex-ikar wrote:

> 1) Какие из этих параметров мне следует заполнять а какие нет?

Не надо ничего вызывать. Парсер сам будет "дёргать" твои определения функций с установленными из документа параметрами.

> 2) О каких префиксах тут говорится? И что за "The Namespace URI"?

http://www.w3.org/TR/xml-names/

> 3) Что подразумевается здесь под атрибутами (attributes attached to the

> element)?
Аттрибуты элемента
<element attribute1="value of attribute 1" attribute2="value of attribute 2">...</element>

> 4) Вызывать этот метод нужно сразу после

См. 1)

> Мне нужно выдрать из этого файла значения всех его элементов..

Может тебе надо DOM?
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re: XML-парсинг SAX
От: theOne Россия  
Дата: 10.10.06 11:25
Оценка:
Поставь в отладчике точки останова в методах startElement & characters и посмотри что и зачем вызывается, а также значения переменных.
Re[2]: XML-парсинг SAX
От: alex-ikar Россия  
Дата: 11.10.06 14:27
Оценка: +1
Здравствуйте, kan, Вы писали:

kan>Может тебе надо DOM?


Спасиб!
Но я так понял, что если нужно просто парсить файлы — то Сакс лучшее решение..
Re[2]: XML-парсинг SAX
От: alex-ikar Россия  
Дата: 11.10.06 14:29
Оценка:
Здравствуйте, theOne, Вы писали:

O>Поставь в отладчике точки останова в методах startElement & characters и посмотри что и зачем вызывается, а также значения переменных.

Я купил книжку прочитал — и все вроде как понял...
Есть правда ишо несколько вопросов — и наверное не последних..
Re: XML-парсинг SAX
От: Blazkowicz Россия  
Дата: 11.10.06 14:44
Оценка:
Здравствуйте, alex-ikar, Вы писали:

AI>Вот делаю первые шаги в обработке xml-файлов..

AI>Времени в обрез, из-за этого спешу, ну и естессна (для меня по крайней мере) что нихрена ниче не понятно...

Jakarta Commons Digester наш выбор.
Re[3]: XML-парсинг SAX
От: kan Великобритания  
Дата: 12.10.06 08:07
Оценка:
alex-ikar wrote:

> kan>Может тебе надо DOM <http://www.w3.org/DOM/&gt;?

> Спасиб!
> Но я так понял, что если нужно просто парсить файлы — то Сакс лучшее
> решение..
На самом деле, DOM-дерево строится с помощью SAX-парсера.
Использование SAX, однако, необходимо при обработке больших файлов или при поточной обработке.
Вообще говоря, SAX и DOM — два принципиально разных подхода к обработке XML, и в каждом частном случае один подход может
быть лучше другого.
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.