Example usage for javax.xml.stream.events XMLEvent isEndElement

List of usage examples for javax.xml.stream.events XMLEvent isEndElement

Introduction

In this page you can find the example usage for javax.xml.stream.events XMLEvent isEndElement.

Prototype

public boolean isEndElement();

Source Link

Document

A utility function to check if this event is a EndElement.

Usage

From source file:Main.java

public static void main(String[] args) throws Exception {
    XMLInputFactory xif = XMLInputFactory.newInstance();
    XMLEventReader xmlr = xif.createXMLEventReader((new FileInputStream(new File("./file.xml"))));

    boolean inline = false;
    StringBuffer sb = new StringBuffer();
    while (xmlr.hasNext()) {
        XMLEvent event = xmlr.nextEvent();

        if (event.isStartElement()) {
            StartElement element = (StartElement) event;
            if ("data".equals(element.getName().toString().trim())) {
                inline = true;/*from w  ww .j a v a 2s  . com*/
            }
        }

        if (inline) {
            sb.append(xmlr.peek());
        }

        if (event.isEndElement()) {
            EndElement element = (EndElement) event;
            if ("data".equals(element.getName().toString().trim())) {
                inline = false;
                System.out.println(sb.toString());
                sb.setLength(0);
            }
        }
    }
}

From source file:XMLEventReaderDemo.java

public static void main(String[] args) throws Exception {
    XMLInputFactory factory = XMLInputFactory.newInstance();
    Reader fileReader = new FileReader("Source.xml");
    XMLEventReader reader = factory.createXMLEventReader(fileReader);

    while (reader.hasNext()) {
        XMLEvent event = reader.nextEvent();
        if (event.isStartElement()) {
            StartElement element = (StartElement) event;
            System.out.println("Start Element: " + element.getName());

            Iterator iterator = element.getAttributes();
            while (iterator.hasNext()) {
                Attribute attribute = (Attribute) iterator.next();
                QName name = attribute.getName();
                String value = attribute.getValue();
                System.out.println("Attribute name/value: " + name + "/" + value);
            }//from ww w  . jav a 2s.c om
        }
        if (event.isEndElement()) {
            EndElement element = (EndElement) event;
            System.out.println("End element:" + element.getName());
        }
        if (event.isCharacters()) {
            Characters characters = (Characters) event;
            System.out.println("Text: " + characters.getData());
        }
    }
}

From source file:org.eclipse.swordfish.core.configuration.xml.SaxParsingPrototype.java

/**
 * @param args//from  w w w. j  a v  a2  s  . c o  m
 */
public static void main(String[] args) throws Exception {
    XMLInputFactory inputFactory = XMLInputFactory.newInstance();
    LinkedList<String> currentElements = new LinkedList<String>();
    InputStream in = SaxParsingPrototype.class.getResource("ComplexPidXmlProperties.xml").openStream();
    XMLEventReader eventReader = inputFactory.createXMLEventReader(in);
    Map<String, List<String>> props = new HashMap<String, List<String>>();
    // Read the XML document
    while (eventReader.hasNext()) {
        XMLEvent event = eventReader.nextEvent();
        if (event.isCharacters() && !event.asCharacters().isWhiteSpace()) {
            putElement(props, getQualifiedName(currentElements), event.asCharacters().getData());

        } else if (event.isStartElement()) {
            System.out.println(event.asStartElement().getName());
            currentElements.add(event.asStartElement().getName().getLocalPart());
            for (Iterator attrIt = event.asStartElement().getAttributes(); attrIt.hasNext();) {
                Attribute attribute = (Attribute) attrIt.next();
                putElement(props, getQualifiedName(currentElements) + "[@" + attribute.getName() + "]",
                        attribute.getValue());

            }
        } else if (event.isAttribute()) {
        } else if (event.isEndElement()) {
            String lastElem = event.asEndElement().getName().getLocalPart();
            if (!currentElements.getLast().equals(lastElem)) {
                throw new UnsupportedOperationException(lastElem + "," + currentElements.getLast());
            }
            currentElements.removeLast();
        }
    }

    eventReader.close();
}

From source file:Main.java

/**
 * Ueberprueft, ob es ein End-Event mit dem uebergebenen Namen ist.
 *
 * @param event der XML-Event//from   ww  w .j a  v a2  s  .c o  m
 * @param name Name des Start-Elements
 * @return true, falls es ein End-Element ist
 */
public static boolean isEndElement(final XMLEvent event, final QName name) {
    return event.isEndElement() && event.asEndElement().getName().equals(name);
}

From source file:Main.java

public static boolean isEndTag(XMLEvent e, String localName) {
    return e.isEndElement() && localNameOf(e).equals(localName);
}

From source file:Main.java

/**
 * Advances the event stream until it encounters a start or end tag, but
 * does not actaully read the event.//from  w  w w  . j  a v  a 2 s  . c  om
 * 
 * @param reader The reader to peek.
 * @return The next StartElement or EndElement event, retrieved using
 *         <code>peek()</code>, or <code>null</code> if the end of the
 *         stream was encountered before any tag event.
 * @throws XMLStreamException If an error occurs reading the stream.
 */
public static final XMLEvent nextTag(XMLEventReader reader) throws XMLStreamException {

    while (reader.hasNext()) {

        XMLEvent nextEvent = reader.peek();
        if (nextEvent.isStartElement() || nextEvent.isEndElement()) {

            return nextEvent;

        } else {

            // eat the event.
            reader.nextEvent();

        }

    }

    return null;

}

From source file:Main.java

/**
 * Copies all events within a <code>StartElement</code> until the matching
 * <code>EndElement</code> is reached. This method assumes that the reader
 * is positioned after the <code>StartElement</code> event, and when the
 * method completes, the stream will be positioned before the 
 * <code>EndElement</code> event, but it will not consume the end tag.
 * //from  w  w w. jav a 2s . c  o m
 * @param reader The event stream to read, positioned after the
 *       <code>StartElement</code>
 * @param consumer The destination for events read from teh stream, or
 *       <code>null</code> to ignore the events completely.
 * @throws XMLStreamException If an error occurs reading events.
 */
public static final void copyElementContent(XMLEventReader reader, XMLEventConsumer consumer)
        throws XMLStreamException {

    if (!reader.hasNext())
        return;

    for (int depth = 1; true;) {

        // peek and see if we're at the end element
        XMLEvent currEvt = reader.peek();
        if (currEvt.isEndElement()) {

            depth--;
            if (depth == 0) {

                break;

            }

        } else if (currEvt.isStartElement()) {

            depth++;

        }

        // consume the event
        currEvt = reader.nextEvent();

        if (consumer != null) {

            consumer.add(currEvt);

        }

    }

}

From source file:Main.java

public static String localNameOf(XMLEvent e) {
    if (e.isStartElement()) {
        return e.asStartElement().getName().getLocalPart();
    } else if (e.isEndElement()) {
        return e.asEndElement().getName().getLocalPart();
    }/*w ww .  j  av a  2s.  co  m*/
    throw new RuntimeException(e + " isn't a tag to get the name of.");
}

From source file:Main.java

public static String digest(InputStream in) throws Exception {
    MessageDigest messageDigest = null;
    XMLInputFactory inputFactory = XMLInputFactory.newFactory();
    messageDigest = MessageDigest.getInstance("MD5");
    XMLEventReader eventReader = inputFactory.createXMLEventReader(in);
    while (eventReader.hasNext()) {
        XMLEvent event = eventReader.nextEvent();

        if (event.isStartElement()) {
            messageDigest.update(event.asStartElement().getName().toString().getBytes());
        } else if (event.isEndElement()) {
            messageDigest.update(event.asEndElement().getName().toString().getBytes());
        }//from  ww w.jav  a 2  s .  c  o  m
    }
    StringBuffer result = new StringBuffer();
    byte[] digest = messageDigest.digest();
    for (byte b : digest) {
        result.append(Integer.toString((b & 0xff) + 0x100, 16).substring(1));
    }
    return result.toString();
}

From source file:com.predic8.membrane.core.interceptor.rest.XML2HTTP.java

private static String slurpXMLData(XMLEventReader parser, StartElement sevent)
        throws XML2HTTPException, XMLStreamException {
    StringWriter bodyStringWriter = new StringWriter();
    XMLEventWriter bodyWriter = null;
    int depth = 0;
    synchronized (xmlOutputFactory) {
        bodyWriter = xmlOutputFactory.createXMLEventWriter(bodyStringWriter);
    }//w w  w  . j  a  va2s  . c o m
    while (parser.hasNext()) {
        XMLEvent event = parser.nextEvent();

        if (event.isEndElement() && depth == 0) {
            bodyWriter.flush();
            return bodyStringWriter.toString();
        }
        bodyWriter.add(event);
        if (event.isStartElement())
            depth++;
        else if (event.isEndElement())
            depth--;
    }
    throw new XML2HTTPException("Early end of file while reading inner XML document.");
}