1 Slouží k načítání souborů ve všelijakých syntaxích (json, ini atd.) tak,
2 aby s nimi následně šlo pracovat jako s XML.
4 SAXParserFactory → SAXParser → XMLReader
6 Nejdůležitější je XMLReader, tam se provádí vlastní načítání exotického souboru.
8 Aby se použila správná (naše) továrna, je potřeba udělat něco z následujícího:
9 – nastavit systémovou vlastnost „javax.xml.parsers.SAXParserFactory“
10 – použít Services API… viz JavaDoc k newInstance()
11 – předat název třídy továrny jako parametr newInstance(…, …);
13 Pak načítáme soubory, jako by to bylo XML:
14 SAXParserFactory továrna = SAXParserFactory.newInstance();
15 SAXParser parser = továrna.newSAXParser();
16 parser.parse(new File("data/vstup.json"), h);
18 Nikde sice nejsou žádné ostré závorky (např. JSON používá {} a []),
19 ale používáme stejné API a všechny navazující nástroje jako u opravdového XML.
21 Náš SAXParser používá SuperXMLReader, který rozhoduje, který konkrétní parser se použije.
24 Moduly řešit přes Features?
26 Kódování pro převod všech znaků na název XML elementu/atributu
28 Možnost zakódovat properties XMLReaderu a skutečné SystemId do URI SystemId.
30 Komentáře přes LexicalHandler
31 To set the LexicalHandler for an XML reader, use the setProperty method
32 with the property name http://xml.org/sax/properties/lexical-handler
33 and an object implementing this interface (or null) as the value.
34 If the reader does not report lexical events, it will throw
35 a SAXNotRecognizedException when you attempt to register the handler.
39 hledá v textu shodu s výrazem (typicky bude končit koncem řádku) a vrací skupiny z výrazu jako elementy
42 komentáře převést na XML komentáře
44 sekce (případně vnořené)
49 zprasené, atributy bez uvozovek, atd.
53 číslování řádků (atribut)
55 převod escapovacích sekvencí na XHTML
62 standardní struktura výstupního XML
64 https://github.com/sirthias/pegdown
67 atributy souborů (včetně rozšířených)
68 volitelně obsah souborů
69 volitelně počítat hashe
70 zpracovat celý podstrom nebo volitelně jen soubory/adresáře vyhovující regulárnímu výrazu
71 vhodné pro konfiguraci programů
74 ale ne obecný – specifická struktura
75 umožňuje popsat prakticky libovolné XML
77 soubor = atribut nebo textový uzel
78 číslování souborů/adresářů → pořadí uzlů
84 formátované XML: odsazení + volitelně barvy
89 Souborový systém (stromová struktura adresářů a souborů)
90 YAML, INI, JSON a další formáty
93 --input-file <filename>
94 --input-stdin <systemId>
95 --input-url <systemId>
97 --system-id <systemId> (override SystemId from file/url, pokud začíná # → připojit za název souboru)
99 --reader-property <key> <value>
101 --default-namespace-uri <uri>
102 --default-namespace-prefix <prefix>
104 --output-file <filename>
106 --action <pluginName>
108 --action-property <key> <value> (recommended way of parametrization, self-documenting)
109 -- <array> (last option/separator, followed by opaque data for output module)
113 po vzoru JDBC ovladačů
114 jak pro vstupní XMLReadery, tak pro výstupní moduly
115 konfigurační volba má: název, titulek, popis, datový typ, výčet hodnot, povinnost
116 společné/generické volby definované na jednom místě
117 → vygenerovat dokumentaci + bash-completion
120 TagSoup: http://mercury.ccil.org/~cowan/XML/tagsoup/
121 HotSAX: http://hotsax.sourceforge.net/ – HotSAX is a small fast SAX2 parser for HTML, XHTML and XML.
122 XOM: http://www.cafeconleche.org/XOM/ – XOM is fairly unique in that it is a dual streaming/tree-based API.
123 Jericho: http://jericho.htmlparser.net/docs/javadoc/net/htmlparser/jericho/StreamedSource.html – Iterátor
124 SAX → DOM: http://www.java2s.com/Code/Java/XML/SaxtoDOMconverter.htm
125 XMLUnit: http://xmlunit.sourceforge.net/api/org/custommonkey/xmlunit/TolerantSaxDocumentBuilder.html
127 http://www.lupa.cz/clanky/asn-1-8211-koncept-abstraktni-syntaxove-notace/
128 http://www.root.cz/clanky/analogie-asn1/
129 http://www.research.ibm.com/trl/projects/xml/xss4j/samples/asn1/Translator.java
130 http://www.bouncycastle.org/ – Pěkná knihovna pro práci s ASN.1 v Javě je součástí Bouncy Castle Crypto APIs
131 https://en.wikipedia.org/wiki/XML_Encoding_Rules – XML Encoding Rules (XER)