stax fix
This commit is contained in:
parent
a14c19d4e2
commit
0eedbaa5f4
@ -1,4 +1,5 @@
|
|||||||
package com.baeldung.xml.stax;
|
package com.baeldung.xml.stax;
|
||||||
|
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -16,52 +17,58 @@ import javax.xml.namespace.QName;
|
|||||||
public class StaxParser {
|
public class StaxParser {
|
||||||
|
|
||||||
public static List<WebSite> parse(String path) {
|
public static List<WebSite> parse(String path) {
|
||||||
List<WebSite> webSites = new ArrayList<WebSite>();
|
List<WebSite> websites = new ArrayList<WebSite>();
|
||||||
WebSite webSite = null;
|
WebSite website = null;
|
||||||
XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
|
XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
|
||||||
try {
|
try {
|
||||||
XMLEventReader reader = xmlInputFactory.createXMLEventReader(new FileInputStream(path));
|
XMLEventReader reader = xmlInputFactory.createXMLEventReader(new FileInputStream(path));
|
||||||
while(reader.hasNext()){
|
while (reader.hasNext()) {
|
||||||
XMLEvent nextEvent = reader.nextEvent();
|
XMLEvent nextEvent = reader.nextEvent();
|
||||||
if (nextEvent.isStartElement()){
|
if (nextEvent.isStartElement()) {
|
||||||
StartElement startElement = nextEvent.asStartElement();
|
StartElement startElement = nextEvent.asStartElement();
|
||||||
switch (startElement.getName().getLocalPart()) {
|
switch (startElement.getName()
|
||||||
case "website":
|
.getLocalPart()) {
|
||||||
webSite = new WebSite();
|
case "website":
|
||||||
Attribute url = startElement.getAttributeByName(new QName("url"));
|
website = new WebSite();
|
||||||
if (url != null) {
|
Attribute url = startElement.getAttributeByName(new QName("url"));
|
||||||
webSite.setUrl(url.getValue());
|
if (url != null) {
|
||||||
}
|
website.setUrl(url.getValue());
|
||||||
break;
|
}
|
||||||
case "name":
|
break;
|
||||||
nextEvent = reader.nextEvent();
|
case "name":
|
||||||
webSite.setName(nextEvent.asCharacters().getData());
|
nextEvent = reader.nextEvent();
|
||||||
break;
|
website.setName(nextEvent.asCharacters()
|
||||||
case "category":
|
.getData());
|
||||||
nextEvent = reader.nextEvent();
|
break;
|
||||||
webSite.setCategory(nextEvent.asCharacters().getData());
|
case "category":
|
||||||
break;
|
nextEvent = reader.nextEvent();
|
||||||
case "status":
|
website.setCategory(nextEvent.asCharacters()
|
||||||
nextEvent = reader.nextEvent();
|
.getData());
|
||||||
webSite.setStatus(nextEvent.asCharacters().getData());
|
break;
|
||||||
break;
|
case "status":
|
||||||
|
nextEvent = reader.nextEvent();
|
||||||
|
website.setStatus(nextEvent.asCharacters()
|
||||||
|
.getData());
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(nextEvent.isEndElement()){
|
if (nextEvent.isEndElement()) {
|
||||||
EndElement endElement = nextEvent.asEndElement();
|
EndElement endElement = nextEvent.asEndElement();
|
||||||
if(endElement.getName().getLocalPart().equals("website")){
|
if (endElement.getName()
|
||||||
webSites.add(webSite);
|
.getLocalPart()
|
||||||
|
.equals("website")) {
|
||||||
|
websites.add(website);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (XMLStreamException xse){
|
} catch (XMLStreamException xse) {
|
||||||
System.out.println("XMLStreamException");
|
System.out.println("XMLStreamException");
|
||||||
xse.printStackTrace();
|
xse.printStackTrace();
|
||||||
} catch (FileNotFoundException fnfe) {
|
} catch (FileNotFoundException fnfe) {
|
||||||
System.out.println("FileNotFoundException");
|
System.out.println("FileNotFoundException");
|
||||||
fnfe.printStackTrace();
|
fnfe.printStackTrace();
|
||||||
}
|
}
|
||||||
return webSites;
|
return websites;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -20,12 +20,12 @@ public class StaxParserUnitTest {
|
|||||||
@Test
|
@Test
|
||||||
public void givenWebsitesXML_whenParsed_thenSizeIsThree() {
|
public void givenWebsitesXML_whenParsed_thenSizeIsThree() {
|
||||||
List<WebSite> websites = StaxParser.parse("src/test/resources/xml/websites.xml");
|
List<WebSite> websites = StaxParser.parse("src/test/resources/xml/websites.xml");
|
||||||
assertTrue(websites.size() == 3);
|
assertEquals(3, websites.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenWebsitesXML_whenParsed_thenLocalhostExists() {
|
public void givenWebsitesXML_whenParsed_thenLocalhostExists() {
|
||||||
List<WebSite> websites = StaxParser.parse("src/test/resources/xml/websites.xml");
|
List<WebSite> websites = StaxParser.parse("src/test/resources/xml/websites.xml");
|
||||||
assertEquals(websites.get(2).getName(),"Localhost");
|
assertEquals("Localhost", websites.get(2).getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user