Разбора XML с простыми обработчика документа Sax

Поскольку SAX является простым API для XML обеспечивает низкого уровня и высокой производительности интерфейс для обработки входящих XML-данных. SAX основан на XML-элемента модели обработчика. Загрузки программы XML должен определить свой собственный документ-обработчика и передать свой экземпляр парсера SAX.

Умолчанию обработчик имеет по крайней мере обратного вызова метода обработки запуска и остановки наценки в XML-элементов:

<!-- file: sample.xml -->
<?xml version="1.0"?>
<!--
XML files are used to store data as a tree of elements.
Each XML-document can have only single root element.
It wraps all the data.
-->
<purchase-order>
<date>2005-10-31</date>
<number>12345</number>
<purchased-by>
<name>My name</name>
<address>My address</address>
</purchased-by>
<order-items>
<item>
<code>687</code>
<type>CD</type>
<label>Some music</label>
</item>
<item>
<code>129851</code>
<type>DVD</type>
<label>Some video</label>
</item>
</order-items>
</purchase-order>



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;



/**

 * Here is an example of parsing of XML data

 * with help of document-handler.

 */



public class SimpleSaxHandler {

    /**

     * Application entry point

     @param args command-line arguments

     */

    public static void main(String[] args) {

        try {

            // creates and returns new instance of SAX-implementation:

            SAXParserFactory factory = SAXParserFactory.newInstance();

            

            // create SAX-parser...

            SAXParser parser = factory.newSAXParser();

            // .. define our handler:

            SaxHandler handler = new SaxHandler();

            

            // and parse:

            parser.parse("sample.xml", handler);

            

        catch (Exception ex) {

            ex.printStackTrace(System.out);

        }

    }

    

    /**

     * Our own implementation of SAX handler reading

     * a purchase-order data.

     */

    private static final class SaxHandler extends DefaultHandler {

        // invoked when document-parsing is started:

        public void startDocument() throws SAXException {

            System.out.println("Document processing started");

        }

        

        // notifies about finish of parsing:

        public void endDocument() throws SAXException {

            System.out.println("Document processing finished");

        }

        

        // we enter to element 'qName':

        public void startElement(String uri, String localName, 

                String qName, Attributes attrsthrows SAXException {

            

            if (qName.equals("purchase-order")) {

            else if (qName.equals("date")) {

            /* if (...)

                        } */ else {

                throw new IllegalArgumentException("Element '" 

                        qName + "' is not allowed here");

                        }

        }

        

        // we leave element 'qName' without any actions:

        public void endElement(String uri, String localName, String qName)

        throws SAXException {

            // do nothing;

        }

    }

}

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>