2

I have the large and complex XML data to filter the particular tags from source data. I am using the stax parser but i can't able to get the value from particular path. I read many article that the stax parser doesn't support for the XPath. Kindly give me some alternate way to implement the XPath concept with Stax parser. I am new to this Stax parser.

Code:

 package verizon.npo.util.xmltester;

 import java.io.StringReader;
 import javax.xml.stream.Location;
 import javax.xml.stream.XMLEventReader;
 import javax.xml.stream.XMLInputFactory;
 import javax.xml.stream.XMLStreamReader;
 import javax.xml.stream.events.StartElement;
 import javax.xml.stream.events.XMLEvent;

 public class StAXAPIEvent {
 public static void main(String[] args) {
    XMLInputFactory factory;
    XMLEventReader reader;
    String xml = 
            "<STUDENTS>" +
            " <STUDENT>"+
            "   <NAME>Karthick</NAME>" +
            "   <NAME>Vinodh</NAME>" +
            "   <NAME>Deva</NAME>" +
            " </STUDENT>"+
            "</STUDENTS>";
    try {
        factory = XMLInputFactory.newInstance();
        factory.setProperty(XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES,
                                        Boolean.TRUE);       
        factory.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES,
                                       Boolean.FALSE);       
        event       
        factory.setProperty(XMLInputFactory.IS_COALESCING, Boolean.FALSE);   
        reader = factory.createXMLEventReader(new StringReader(xml));

    XMLStreamReader xsr = factory.createXMLStreamReader(new StringReader(xml));

        Location loc = null;
        while (reader.hasNext()) {       
            //returns the event type               
            XMLEvent e = reader.nextEvent();         

            if (e.isStartElement()) {
                StartElement startElement = e.asStartElement();
                            System.out.println("Start element : 
                                          "+startElement.getName().getLocalPart());
            }

            if (e.isCharacters()) {

        System.out.println("Characters : "+e.asCharacters().getData());
            }
        }

    } catch (Exception e) {
        e.printStackTrace();
    }
}    

}

I want to read the second student's name from this xml data

ex.. STUDENTS/STUDENT/NAME[2] : Vinodh

Pradip
  • 3,189
  • 3
  • 22
  • 27
Karthikeyan Sukkoor
  • 968
  • 2
  • 6
  • 24
  • Possible duplicate of [How to read XML using XPath in Java](http://stackoverflow.com/questions/2811001/how-to-read-xml-using-xpath-in-java) – Ray Mar 29 '17 at 12:02

0 Answers0