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)
59 standardní struktura výstupního XML
61 https://github.com/sirthias/pegdown
64 atributy souborů (včetně rozšířených)
65 volitelně obsah souborů
66 volitelně počítat hashe
67 zpracovat celý podstrom nebo volitelně jen soubory/adresáře vyhovující regulárnímu výrazu
68 vhodné pro konfiguraci programů
74 formátované XML: odsazení + volitelně barvy
79 Souborový systém (stromová struktura adresářů a souborů)
80 YAML, INI, JSON a další formáty
83 --input-file <filename>
84 --input-stdin <systemId>
85 --input-url <systemId>
87 --system-id <systemId> (override SystemId from file/url, pokud začíná # → připojit za název souboru)
89 --reader-property <key> <value>
91 --default-namespace-uri <uri>
92 --default-namespace-prefix <prefix>
94 --output-file <filename>
98 --action-property <key> <value> (recommended way of parametrization, self-documenting)
99 -- <array> (last option/separator, followed by opaque data for output module)
103 po vzoru JDBC ovladačů
104 jak pro vstupní XMLReadery, tak pro výstupní moduly
105 konfigurační volba má: název, titulek, popis, datový typ, výčet hodnot, povinnost
106 společné/generické volby definované na jednom místě
107 → vygenerovat dokumentaci + bash-completion
110 TagSoup: http://mercury.ccil.org/~cowan/XML/tagsoup/
111 HotSAX: http://hotsax.sourceforge.net/ – HotSAX is a small fast SAX2 parser for HTML, XHTML and XML.
112 XOM: http://www.cafeconleche.org/XOM/ – XOM is fairly unique in that it is a dual streaming/tree-based API.
113 Jericho: http://jericho.htmlparser.net/docs/javadoc/net/htmlparser/jericho/StreamedSource.html – Iterátor
114 SAX → DOM: http://www.java2s.com/Code/Java/XML/SaxtoDOMconverter.htm
115 XMLUnit: http://xmlunit.sourceforge.net/api/org/custommonkey/xmlunit/TolerantSaxDocumentBuilder.html
117 http://www.lupa.cz/clanky/asn-1-8211-koncept-abstraktni-syntaxove-notace/
118 http://www.root.cz/clanky/analogie-asn1/
119 http://www.research.ibm.com/trl/projects/xml/xss4j/samples/asn1/Translator.java
120 http://www.bouncycastle.org/ – Pěkná knihovna pro práci s ASN.1 v Javě je součástí Bouncy Castle Crypto APIs
121 https://en.wikipedia.org/wiki/XML_Encoding_Rules – XML Encoding Rules (XER)