XML fájl elemzése StAX használatával
1. Bemutatkozás
Ebben az oktatóanyagban bemutatjuk, hogyan elemezzen egy XML fájlt a StAX segítségével. Megvalósítunk egy egyszerű XML elemzőt, és egy példával megnézzük, hogyan működik.
2. Parsálás a StAX-szal
A StAX egyike a Java számos XML könyvtárának. Ez egy memória-hatékony könyvtár, amely a Java 6 óta szerepel a JDK-ban. A StAX nem tölti be a teljes XML-t a memóriába. Ehelyett csak továbbítja az adatokat egy adatfolyamból. A folyamot egy XMLEventReader tárgy.
3. XMLEventReader Osztály
A StAX-ben minden kezdőcímke vagy végcímke esemény. XMLEventReader események folyamaként olvas XML fájlt. Megadja az XML elemzéséhez szükséges módszereket is. A legfontosabb módszerek:
- isStartElement (): ellenőrzi, hogy az aktuális esemény a StartElement (kezdőcímke)
- isEndElement (): ellenőrzi, hogy az aktuális esemény egy EndElement (végcímke)
- asCharacters (): az aktuális eseményt adja vissza karakterként
- getName (): megkapja az aktuális esemény nevét
- getAttributes (): visszatér egy Iterátor az aktuális esemény attribútumai közül
4. Egyszerű XML-elemző megvalósítása
Mondanom sem kell, hogy az XML elemzésének első lépése az elolvasása. Szükségünk van egy XMLInputFactory létrehozni egy XMLEventReader fájlunk olvasásához:
XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance (); XMLEventReader olvasó = xmlInputFactory.createXMLEventReader (új FileInputStream (elérési út));
Most, hogy a XMLEventReader készen áll, haladunk előre a patakban nextEvent ():
while (olvasó.hasNext ()) {XMLEvent nextEvent = olvasó.nextEvent (); }
Ezután először meg kell találnunk a kívánt kezdőcímkét:
if (nextEvent.isStartElement ()) {StartElement startElement = nextEvent.asStartElement (); if (startElement.getName (). getLocalPart (). egyenlő ("kívánt")) {// ...}}
Következésképpen elolvashatjuk az attribútumokat és az adatokat:
Karakterlánc URL = startElement.getAttributeByName (új QName ("url")). GetValue (); Karakterlánc neve = nextEvent.asCharacters (). GetData ();
Azt is ellenőrizhetjük, hogy elértük-e a végcímkét:
if (nextEvent.isEndElement ()) {EndElement endElement = nextEvent.asEndElement (); }
5. Példa elemzésre
A jobb megértés érdekében futtassuk az elemzőnket egy minta XML fájlon:
Baeldung Online tanfolyamok Online példák Offline Localhost tesztekre offline
Elemezzük az XML-t, és tároljuk az összes adatot az úgynevezett entitásobjektumok listájába weboldalak:
while (olvasó.hasNext ()) {XMLEvent nextEvent = olvasó.nextEvent (); if (nextEvent.isStartElement ()) {StartElement startElement = nextEvent.asStartElement (); kapcsoló (startElement.getName (). getLocalPart ()) {case "website": website = new WebSite (); Attribútum URL = startElement.getAttributeByName (új QName ("url")); if (url! = null) {website.setUrl (url.getValue ()); } szünet; case "név": nextEvent = olvasó.nextEvent (); website.setName (nextEvent.asCharacters (). getData ()); szünet; case "kategória": nextEvent = olvasó.nextEvent (); website.setCategory (nextEvent.asCharacters (). getData ()); szünet; case "status": nextEvent = olvasó.nextEvent (); website.setStatus (nextEvent.asCharacters (). getData ()); szünet; }} if (nextEvent.isEndElement ()) {EndElement endElement = nextEvent.asEndElement (); if (endElement.getName (). getLocalPart (). egyenlő ("weboldal")) {websites.add (weboldal); }}}
Az egyes webhelyek összes tulajdonságának megszerzéséhez ellenőrizzük startElement.getName (). getLocalPart () minden eseményre. Ezután ennek megfelelően állítjuk be a megfelelő tulajdonságot.
Amikor elérjük a webhely végelemeit, tudjuk, hogy entitásunk teljes, ezért hozzáadjuk az entitást az elemünkhöz weboldalak lista.
6. Következtetés
Ebben az oktatóanyagban megtanultuk hogyan elemezzen egy XML fájlt a StAX könyvtár segítségével.
A példa XML fájl és a teljes értelmező kód, mint mindig, elérhető a Githubon.