View Javadoc
1   /*
2    * Copyright (c) 2008, The JUNG Authors
3    *
4    * All rights reserved.
5    *
6    * This software is open-source under the BSD license; see either
7    * "license.txt" or
8    * https://github.com/jrtom/jung/blob/master/LICENSE for a description.
9    */
10  
11  package edu.uci.ics.jung.io.graphml.parser;
12  
13  import javax.xml.stream.XMLEventReader;
14  import javax.xml.stream.events.Characters;
15  import javax.xml.stream.events.EndElement;
16  import javax.xml.stream.events.StartElement;
17  import javax.xml.stream.events.XMLEvent;
18  
19  import edu.uci.ics.jung.graph.Hypergraph;
20  import edu.uci.ics.jung.io.GraphIOException;
21  import edu.uci.ics.jung.io.graphml.ExceptionConverter;
22  
23  /**
24   * Parses an element that just contains text.
25   *
26   * @author Nathan Mittler - nathan.mittler@gmail.com
27   */
28  public class StringElementParser<G extends Hypergraph<V,E>,V,E> extends AbstractElementParser<G,V,E> {
29  
30      public StringElementParser(ParserContext<G,V,E> parserContext) {
31          super(parserContext);
32      }
33      
34      public String parse(XMLEventReader xmlEventReader, StartElement start)
35              throws GraphIOException {
36  
37          try {
38              String str = null;
39  
40              while (xmlEventReader.hasNext()) {
41  
42                  XMLEvent event = xmlEventReader.nextEvent();
43                  if (event.isStartElement()) {
44  
45                      // Parse the unknown element.
46                      getUnknownParser().parse(xmlEventReader, event
47                              .asStartElement());
48                  } else if (event.isEndElement()) {
49                      EndElement end = (EndElement) event;
50                      verifyMatch(start, end);
51                      break;
52                  } else if (event.isCharacters()) {
53                      Characters characters = (Characters) event;
54                      str = characters.getData();
55                  }
56              }
57  
58              return str;
59  
60          } catch (Exception e) {
61              ExceptionConverter.convert(e);
62          }
63  
64          return null;
65      }
66  }