Programmering

Slurping XML med Groovy

I de tidlige dage med at bruge Java sammen med XML syntes det ofte sværere end det skulle være at bruge Java-programmeringssproget med XML-markeringssprog. Udover de ikke-trivielle og ofte forskelligt implementerede DOM- og SAX-API'er var det bare et almindeligt problem at finde den korrekte version af Xerces (og senere Crimson) uden at have for mange modstridende versioner af dette bibliotek. Dette miljø førte til oprettelsen og modtog successivt JDOM-projekt. Senere udvikling som introduktionen af ​​standard Java XML parsing API af JAXP (JDK 1.4) og inkluderingen af ​​JAXB i Java SE 6 (og andre Java / XML bindende biblioteker tilgængelige separat) ville gøre parsing og arbejde med XML i Java meget lettere . Groovy fortsætter disse fremskridt for at lette Java / XML-integration. I dette blogindlæg ser jeg på, hvordan brugen af ​​Groovy's XmlSlurper gør XML-parsing forfriskende let og næsten gennemsigtig.

Følgende enkle XML-kode vil blive brugt til at demonstrere Groovys XmlSlurper. XML-filen til dette eksempel kaldes RockAndRoll.xml.

RockAndRoll.xml

Det næste kodestykke viser noget Groovy-kode ved hjælp af XMLSlurper til at udskrive nogle detaljer baseret på denne kilde-XML. Groovy-scriptet kaldes i dette tilfælde slurpXml.groovy.

slurpXml.groovy

#! / usr / bin / env groovy // slurpXml.groovy // Demonstrerer brug af Groovys XML-slurping. // albums = new XmlSlurper (). parse ("RockAndRoll.xml") albums.Album.each {println "$ {it. @ artist} s album $ {it. @ title} blev udgivet i $ {it. @ år}." it.Song.each {println "\ tFeaturing $ {it. @ title}, der toppede i USA på $ {it. @ peak}"}} 

Som Groovy-koden ovenfor viser, er der kun få linier med kode, der kræves for at analysere XML og udskrive resultaterne som en del af længere strenge. Den eneste linje ny XmlSlurper (). parse ("RockAndRoll.xml") er alt, hvad der kræves for at analysere kilden XML. Derefter variablen, som disse resultater er tildelt (i dette tilfælde album) giver adgang til XML-indholdet via velkendt syntaks.

Når Groovy-koden ovenfor udføres, ligner dens resultater dem, der vises i følgende skærmbillede.

Groovy-brugervejledningen har et afsnit afsat til dækning af læsning af XML ved hjælp af Groovys XmlSlurper. Dette afsnit påpeger yderligere problemer i forbindelse med brugen af ​​Groovy's XmlSlurper, såsom at håndtere XML-tagnavne, der inkluderer bindestreger (brug dobbelt anførselstegn rundt om navn med bindestreg inkluderet) og navneområdet matchende detaljer.

Konklusion

Fordi Groovy virkelig er Java, kan Groovy gøre brug af overflod af XML-håndterings-API'er til Java. Imidlertid kan og går Groovy ud over dette og leverer endnu lettere at bruge API'er til XML-manipulation. Groovy's XmlSlurper er et eksempel på, hvordan Groovy gør XML-læsning / parsing / slurping lettere end nogensinde.

Yderligere referencer

Udover afsnittet Groovy User Guide om XmlSlurper er der mange andre online ressourcer, der dækker brugen af ​​XmlSlurper. Jeg lister nogle af dem her.

• Læsning af XML ved hjælp af Groovys XmlSlurper

• Groovy: Behandling af eksisterende XML (6. marts 2009)

• Praktisk groovy: Bygning, parsing og slurping XML (19. maj 2009)

• Intet gør, at du vil have groovy mere end XML (12. marts 2008)

• Opdatering af XML med XmlSlurper

• Groovy XMLSlurper

Denne historie, "Slurping XML with Groovy" blev oprindeligt udgivet af JavaWorld.