Podpora konfigurace.
1 package cz.frantovo.alt2xml.vstup;
3 import java.io.IOException;
4 import java.util.Stack;
5 import org.json.simple.parser.ParseException;
6 import org.xml.sax.ContentHandler;
7 import org.xml.sax.SAXException;
13 public class JsonSimpleContentHandler implements org.json.simple.parser.ContentHandler {
15 /** Sem vypisujeme XML události */
16 private ContentHandler saxVýstup;
17 /** Musíme si pamatovat polohu v XML stromu, abychom věděli, kterou značku kdy uzavřít */
18 private Stack<String> poloha = new Stack<>();
20 * Po textových uzlech vkládáme konce elementů rovnou,
21 * ale pokud jeden element končí hned po jiném,
22 * vložíme mezi ně ještě konec řádku a odsazení.
24 private boolean zalomitŘádek = false;
26 public JsonSimpleContentHandler(ContentHandler saxVýstup) {
27 this.saxVýstup = saxVýstup;
30 private void začniElement(String název) throws IOException {
33 saxVýstup.startElement(null, null, název, null);
35 } catch (SAXException e) {
36 throw new IOException("Chyba při začátku elementu.", e);
40 private void ukončiElement() throws IOException {
42 String značka = poloha.pop();
47 saxVýstup.endElement(null, null, značka);
48 } catch (SAXException e) {
49 throw new IOException("Chyba při ukončování elementu.", e);
53 private void vložOdsazení() throws IOException {
55 * TODO: ignorableWhitespace() ?
58 for (int i = 0; i < poloha.size(); i++) {
63 private void vložText(String text) throws IOException {
65 saxVýstup.characters(text.toCharArray(), 0, text.length());
66 } catch (SAXException e) {
67 throw new IOException("Chyba při vkládání textu.", e);
72 public void startJSON() throws ParseException, IOException {
74 saxVýstup.startDocument();
75 začniElement("objekt");
76 } catch (SAXException e) {
77 throw new IOException("Chyba při začátku dokumentu.", e);
82 public void endJSON() throws ParseException, IOException {
86 saxVýstup.endDocument();
87 } catch (SAXException e) {
88 throw new IOException(e);
93 public boolean startObject() throws ParseException, IOException {
94 // System.err.println("startObject");
99 public boolean endObject() throws ParseException, IOException {
100 // System.err.println("endObject");
105 public boolean startObjectEntry(String key) throws ParseException, IOException {
111 public boolean endObjectEntry() throws ParseException, IOException {
113 // System.err.println("endObjectEntry");
118 public boolean startArray() throws ParseException, IOException {
119 // System.err.println("startArray");
124 public boolean endArray() throws ParseException, IOException {
125 // System.err.println("endArray");
130 public boolean primitive(Object value) throws ParseException, IOException {
131 vložText(String.valueOf(value));
132 zalomitŘádek = false;