Analýza súboru XML pomocou programu StAX

1. Úvod

V tomto výučbe si ukážeme, ako analyzovať súbor XML pomocou programu StAX. Implementujeme jednoduchý analyzátor XML a na príklade si ukážeme, ako to funguje.

2. Analýza pomocou StAX

StAX je jednou z niekoľkých XML knižníc v Jave. Je to pamäťovo efektívna knižnica zahrnutá v JDK od verzie Java 6. StAX nenačíta celý XML do pamäte. Namiesto toho sťahuje údaje z toku iba vpred. Prúd je čítaný pomocou XMLEventReader objekt.

3. XMLEventReader Trieda

V StAX je každá začiatočná značka alebo koncová značka udalosťou. XMLEventReader načíta súbor XML ako prúd udalostí. Poskytuje tiež metódy potrebné na analýzu XML. Najdôležitejšie metódy sú:

  • isStartElement (): skontroluje, či je aktuálna udalosť a StartElement (začiatočná značka)
  • isEndElement (): skontroluje, či je aktuálna udalosť EndElement (koncová značka)
  • asCharacter (): vráti aktuálnu udalosť ako znaky
  • getName (): získa názov aktuálnej udalosti
  • getAttributes (): vráti an Iterátor atribútov aktuálnej udalosti

4. Implementácia jednoduchého analyzátora XML

Netreba dodávať, že prvým krokom pri analýze súboru XML je jeho prečítanie. Potrebujeme XMLInputFactory vytvoriť XMLEventReader za prečítanie nášho súboru:

XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance (); Čítačka XMLEventReader = xmlInputFactory.createXMLEventReader (nový FileInputStream (cesta));

Teraz, keď XMLEventReader je pripravený, posunieme sa vpred prúdom pomocou nextEvent ():

while (reader.hasNext ()) {XMLEvent nextEvent = reader.nextEvent (); }

Ďalej musíme najskôr nájsť požadovanú začiatočnú značku:

if (nextEvent.isStartElement ()) {StartElement startElement = nextEvent.asStartElement (); if (startElement.getName (). getLocalPart (). equals ("požadovaný")) {// ...}}

Následne môžeme čítať atribúty a údaje:

Reťazec url = startElement.getAttributeByName (nový QName ("url")). GetValue (); Názov reťazca = nextEvent.asCharacters (). GetData ();

Môžeme tiež skontrolovať, či sme dosiahli koncovú značku:

if (nextEvent.isEndElement ()) {EndElement endElement = nextEvent.asEndElement (); }

5. Príklad analýzy

Pre lepšie pochopenie spustime náš parser na vzorovom súbore XML:

   Baeldung Online kurzy Príklady online Príklady Offline testy Localhost Offline 

Poďme analyzovať XML a uložiť všetky údaje do zoznamu volaných objektov entít webové stránky:

while (reader.hasNext ()) {XMLEvent nextEvent = reader.nextEvent (); if (nextEvent.isStartElement ()) {StartElement startElement = nextEvent.asStartElement (); switch (startElement.getName (). getLocalPart ()) {case "website": website = new WebSite (); Atribút url = startElement.getAttributeByName (nový QName ("url")); if (url! = null) {website.setUrl (url.getValue ()); } prestávka; prípad "name": nextEvent = reader.nextEvent (); website.setName (nextEvent.asCharacters (). getData ()); prestávka; prípad „kategória“: nextEvent = reader.nextEvent (); website.setCategory (nextEvent.asCharacters (). getData ()); prestávka; prípad "status": nextEvent = reader.nextEvent (); website.setStatus (nextEvent.asCharacter (). getData ()); prestávka; }} if (nextEvent.isEndElement ()) {EndElement endElement = nextEvent.asEndElement (); if (endElement.getName (). getLocalPart (). equals ("web")) {websites.add (web); }}}

Aby sme získali všetky vlastnosti jednotlivých webových stránok, kontrolujeme to startElement.getName (). getLocalPart () pre každú udalosť. Podľa toho sme potom nastavili zodpovedajúcu vlastnosť.

Keď sa dostaneme k koncovému prvku webovej stránky, vieme, že naša entita je úplná, a preto ju pridáme do našej webové stránky zoznam.

6. Záver

V tomto tutoriáli sme sa dozvedeli ako analyzovať XML súbor pomocou knižnice StAX.

Vzorový súbor XML a celý kód analyzátora sú ako vždy k dispozícii na serveri Github.


$config[zx-auto] not found$config[zx-overlay] not found