Здравствуйте, kan, Вы писали:
kan>Может тебе надо DOM?
Спасиб!
Но я так понял, что если нужно просто парсить файлы — то Сакс лучшее решение..
Всем привет!
Вот делаю первые шаги в обработке 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>
Мне нужно выдрать из этого файла значения всех его элементов..
Если у кого хватит терпения объяснить на примере — спасибо, если кто хотябы "пнет" меня в нужную сторону — тоже буду примного благодарен

...
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
Поставь в отладчике точки останова в методах startElement & characters и посмотри что и зачем вызывается, а также значения переменных.
Здравствуйте, theOne, Вы писали:
O>Поставь в отладчике точки останова в методах startElement & characters и посмотри что и зачем вызывается, а также значения переменных.
Я купил книжку прочитал — и все вроде как понял...
Есть правда ишо несколько вопросов — и наверное не последних..
Здравствуйте, alex-ikar, Вы писали:
AI>Вот делаю первые шаги в обработке xml-файлов..
AI>Времени в обрез, из-за этого спешу, ну и естессна (для меня по крайней мере) что нихрена ниче не понятно...
Jakarta Commons Digester наш выбор.
alex-ikar wrote:
> kan>Может тебе надо DOM <http://www.w3.org/DOM/>?
> Спасиб!
> Но я так понял, что если нужно просто парсить файлы — то Сакс лучшее
> решение..
На самом деле, DOM-дерево строится с помощью SAX-парсера.

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