Java >> Java tutorial >  >> Tag >> XML

Hvordan læser og analyserer man XML-fil i Java?

XML, eXtensible Markup Language er et opmærkningssprog, der definerer et sæt regler for kodning af dokumenter i et format, der er læsbart. XML-parsing henviser til at gå gennem et XML-dokument for at få adgang til eller ændre data. En XML-parser giver den nødvendige funktionalitet til at få adgang til eller ændre data i et XML-dokument. Lad os i denne artikel udforske Java XML Parser i detaljer.

  • Hvad er XML Parser?
  • Java XML Parser
  • Java XML Parser – DOM
  • Parse en XML-fil ved hjælp af DOM-parseren
  • Fordele og ulemper ved DOM Parser

Hvad er XML Parser?

XML-parseren er et softwarebibliotek eller en pakke, der giver en grænseflade til klientapplikationer til at arbejde med XML-dokumenter. Den kontrollerer for korrekt format af XML-dokumentet og validerer også XML-dokumenterne.

Følgende diagram viser, hvordan XML-parser interagerer med XML-dokumenter:

Du kan tænke på validering som endnu et trin ud over parsing. Da komponentdelene af programmet identificeres under parsing, kan en validerende parser sammenligne dem med det mønster, der er fastlagt af DTD'en eller skemaet, for at kontrollere, at de stemmer overens.

JAVA XML-parser

Den grundlæggende komponent i XML-udvikling er XML-parsing. XML-parsing til Java er en selvstændig XML-komponent, der analyserer et XML-dokument (og til tider også et selvstændigt DTD- eller XML-skema), så brugerprogrammet kan behandle det. Figuren nedenfor viser et XML-dokument som input til XML-parseren til Java.

  • Et XML-dokument sendes som input til XML-parseren til Java
  • DOM- eller SAX-parsergrænsefladen analyserer XML-dokumentet
  • Den parsede XML overføres derefter til applikationen for yderligere behandling

XML-parseren til Java kan også indeholde en integreret XSL Transformation (XSLT)-processor til at transformere XML-data ved hjælp af XSL-typografiark. Ved at bruge XSLT-processoren kan du nemt transformere XML-dokumenter fra XML til XML, XML til HTML eller praktisk talt til et hvilket som helst andet tekstbaseret format.

Java giver en masse muligheder for at parse XML-dokumenter. Nogle af de almindeligt anvendte Java XML-parsere er:

  1. DOM-parser
  2. SAX Parser
  3. StAX Parser
  4. JAXB

Lad os i denne artikel se, hvordan man parser en XML-fil ved hjælp af DOM-parseren.

Java XML Parser – DOM

DOM står for Document Object Model. DOM Parser er den nemmeste java XML-parser at implementere og lære. Den analyserer et helt XML-dokument, indlæser det i hukommelsen og konstruerer en trærepræsentation af dokumentet. Lad os overveje et simpelt eksempel for at forstå konceptet.

Til demoformål vil vi bruge en fil med navnet Employees.xml . I filen har hver medarbejder et unikt ID, for- og efternavn, alder og løn, og medarbejderne er adskilt af deres ID'er.

<?xml version="1.0" encoding="UTF-8"?>
<Employees>
     <Employee ID="1">
          <Firstname>Dean</Firstname >
          <Lastname>Winchester</Lastname>
          <Age>30</Age>
          <Salary>2500</Salary>
     </Employee>
     <Employee ID="2">
          <Firstname>Sam</Firstname>
          <Lastname>Davis</Lastname>
          <Age>22</Age>
          <Salary>1500</Salary>
     </Employee>
     <Employee ID="3">
          <Firstname>Jake</Firstname>
          <Lastname>Peralta</Lastname>
          <Age>24</Age>
          <Salary>2000</Salary>
     </Employee>
     <Employee ID="4">
          <Firstname>Amy</Firstname>
          <Lastname>Griffin</Lastname>
          <Age>25</Age>
          <Salary>2250</Salary>
     </Employee>
</Employees>

For at fange forestillingen om en medarbejder opretter vi også dens respektive Java-klasse, kaldet Employee.java som vist nedenfor:

package MyPackage;

public class Employee {

	private String ID;
    private String Firstname;
    private String Lastname;
    private int age;
    private double salary;

    public Employee(String ID, String Firstname, String Lastname, int age, double salary) {
         this.ID = ID;
         this.Firstname = Firstname;
         this.Lastname = Lastname;
         this.age = age;
         this.salary = salary;
    }

    @Override
    public String toString() {
         return "<" + ID + ", " + Firstname + ", " + Lastname + ", " + age + ", " + salary + ">";
    }

}

Parse en XML-fil ved hjælp af DOM-parseren

Document Object Model (DOM) giver API'er, der lader dig oprette, ændre, slette og omarrangere noder efter behov. DOM-parseren analyserer hele XML-dokumentet og indlæser XML-indholdet i en træstruktur. Ved at bruge Node- og NodeList-klasserne kan vi hente og ændre indholdet af en XML-fil.

Et eksempel på et program i Java, der indlæser indholdet af en XML-fil og udskriver dens indhold, er vist nedenfor:

package MyPackage;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
 
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
 
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
 
public class DomParserExample {
 
     public static void main(String[] args) throws ParserConfigurationException,
          SAXException, IOException {
 
    	//Get Document Builder
          DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
          DocumentBuilder builder = factory.newDocumentBuilder();
 
          // Load the input XML document, parse it and return an instance of the
          // Document class.
          Document document = builder.parse(new File("Employees.xml"));
 
          List<Employee> employees = new ArrayList<Employee>();
          NodeList nodeList = document.getDocumentElement().getChildNodes();
          for (int i = 0; i < nodeList.getLength(); i++) {
               Node node = nodeList.item(i);
 
               if (node.getNodeType() == Node.ELEMENT_NODE) {
                    Element elem = (Element) node;
 
                    // Get the value of the ID attribute.
                    String ID = node.getAttributes().getNamedItem("ID").getNodeValue();
 
                    // Get the value of all sub-elements.
                    String firstname = elem.getElementsByTagName("Firstname")
                                        .item(0).getChildNodes().item(0).getNodeValue();
 
                    String lastname = elem.getElementsByTagName("Lastname").item(0)
                                        .getChildNodes().item(0).getNodeValue();
 
                    Integer age = Integer.parseInt(elem.getElementsByTagName("Age")
                                        .item(0).getChildNodes().item(0).getNodeValue());
 
                    Double salary = Double.parseDouble(elem.getElementsByTagName("Salary")
                                        .item(0).getChildNodes().item(0).getNodeValue());
 
                    employees.add(new Employee(ID, firstname, lastname, age, salary));
               }
          }
 
          // Print all employees.
          for (Employee empl: employees)
               System.out.println(empl.toString());
     }
}

Udførelsen af ​​kode sker som følger:

  • Først skal du importere dom-parserpakker i applikationen
  • Næste trin er at oprette DocumentBuilder-objektet
  • Læs XML-filen til dokumentobjektet.
  • Parse og gem XML-filen i en forekomst af klassen Document
  • Når du finder en node af typen Node.ELEMENT_NODE , hent alle dens oplysninger og gem dem i en forekomst af klassen Medarbejder
  • Udskriv endelig oplysningerne om alle gemte medarbejdere

Output

<1, Dean, Winchester, 30, 2500.0>
<2, Sam, Davis, 22, 1500.0>
<3, Jake, Peralta, 24, 2000.0>
<4, Amy, Griffin, 25, 2250.0>

Sådan kan du parse en XML-fil ved hjælp af DOM-parseren. DOM-parser har sine fordele og ulemper.

Fordele og ulemper ved DOM Parser

Fordele

  • API er meget enkel at bruge
  • Det understøtter både læse- og skriveoperationer
  • Foretrukket, når der kræves tilfældig adgang til vidt adskilte dele af et dokument

Ulempe

  • Det er hukommelsesineffektivt. Efterhånden som filstørrelsen øges, forringes dens ydeevne og bruger mere hukommelse
  • Forholdsvis langsommere end andre XML-parsere, der er tilgængelige i Java

Dette bringer os til slutningen af ​​denne 'Java XML Parser'-artikel.

Sørg for, at du øver dig så meget som muligt, og vend din oplevelse tilbage.

Tjek Java-kurset ud Træning af Edureka, en betroet online læringsvirksomhed med et netværk af mere end 250.000 tilfredse elever spredt over hele kloden. Vi er her for at hjælpe dig med hvert trin på din rejse, for at blive et udover dette java-interviewspørgsmål, kommer vi med et pensum, der er designet til studerende og professionelle, der ønsker at være Java-udvikler.

Har du et spørgsmål til os? Nævn det venligst i kommentarfeltet i denne 'Java XML Parser' artikel, og vi vender tilbage til dig så hurtigt som muligt.


Java tag