Fastest and optimized way to read the xml

后端 未结 3 1633
南旧
南旧 2020-12-23 23:25

I have this below XML file



  Kiran
  Pai
  22
         


        
3条回答
  •  抹茶落季
    2020-12-23 23:54

    A Stax Example

    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.InputStream;
    import javax.xml.stream.XMLEventReader;
    import javax.xml.stream.XMLInputFactory;
    import javax.xml.stream.XMLStreamException;
    import javax.xml.stream.events.StartElement;
    import javax.xml.stream.events.XMLEvent;
    
    public class ReadAndPrintXMLFile {
    
    
        public static void main(String argv []) {
    
            String inputFile = "c:/source/book.xml";
    
            try {
                // First create a new XMLInputFactory
                XMLInputFactory inputFactory = XMLInputFactory.newInstance();
                // Setup a new eventReader
                InputStream in = new FileInputStream(inputFile);
                XMLEventReader eventReader = inputFactory.createXMLEventReader(in);
                // Read the XML document
    
                while (eventReader.hasNext()) {
                    XMLEvent event = eventReader.nextEvent();
    
                    if (event.isStartElement()) {
                        StartElement startElement = event.asStartElement();
    
                        if (startElement.getName().getLocalPart().equals("first")) {
    
                            event = eventReader.nextEvent();
    
                            StringBuilder fName = new StringBuilder();
    
                            while (!event.isEndElement()) {
                                fName.append(event.asCharacters().getData());
                                event = eventReader.nextEvent();
                            }
                            System.out.println("First Name : " + fName);
    
                            event = eventReader.nextEvent();
    
                            continue;
                        }
    
                        if (startElement.getName().getLocalPart().equals("last")) {
    
                            event = eventReader.nextEvent();
    
                            StringBuilder lName = new StringBuilder();
    
                            while (!event.isEndElement()) {
                                lName.append(event.asCharacters().getData());
                                event = eventReader.nextEvent();
                            }
                            System.out.println("Last Name : " + lName);
    
                            event = eventReader.nextEvent();
    
                            continue;
                        }
    
                        if (startElement.getName().getLocalPart().equals("age")) {
    
                            event = eventReader.nextEvent();
    
                            StringBuilder age = new StringBuilder();
    
                            while (!event.isEndElement()) {
                                age.append(event.asCharacters().getData());
                                event = eventReader.nextEvent();
                            }
                            System.out.println("Age : " + age);
    
                            event = eventReader.nextEvent();
    
                            continue;
                        }
    
                    }
                }
            } catch (FileNotFoundException e) {
                System.out.println("File not Found: " + inputFile);
            } catch (XMLStreamException e) {
                e.printStackTrace();
            }
        }
    
    }
    


    Output:

    First Name : Kiran
    Last Name : Pai
    Age : 22
    First Name : Bill
    Last Name : Gates
    Age : 46
    First Name : Steve
    Last Name : Jobs
    Age : 40
    

提交回复
热议问题