Извлечение из значений атрибутов XML-элемента

В дополнение к общим элементом XML-SAX обработка позволяет получить доступ к их атрибутам. Поскольку XML-атрибуты помещаются в распашная тега XML-элементов, обработчик может получить к ним доступ в нее начала элемента методом.

Набор атрибутов representes на карте объект, из которого любой атрибут-значение может быть принято по его имени:

<!-- file: sample.xml -->
<?xml version="1.0"?>
<!--
All XML elements may have attributes.
Sometimes it is more comfortable to use an attribute
instead of nested element.
-->
<purchase-order date="2005-10-31" number="12345">
<purchased-by name="My name">
<!--
since address may be too complex for attribute
value, we place it to a dedicated element
-->
<address>My address</address>
</purchased-by>
<order-items>
<!--
here is an example of empty element
i.e. containing no nested elements
-->
<item code="687" type="CD" label="Some music" />
<item code="129851" type="DVD" label="Some video"/>
</order-items>
</purchase-order>

import javax.xml.parsers.SAXParser;

import org.xml.sax.helpers.DefaultHandler;

import org.xml.sax.SAXException;

import org.xml.sax.Attributes;

import javax.xml.parsers.SAXParserFactory;



/**

 * Here is sample of reading attributes of a given XML element.

 */



public class SampleOfReadingAttributes {

    /**

     * 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 {

        

        // we enter to element 'qName':

        public void startElement(String uri, String localName,

                String qName, Attributes attrsthrows SAXException {

            

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

                // order date value as String:

                String date = attrs.getValue("date");

                // order number as a String:

                String number = attrs.getValue("number");

                

                System.out.println("Order #" + number + " date is '" +

                        date + "'");

                

            }

        }

    }

}

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

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

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