analýza/alt2xml.txt
author František Kučera <franta-hg@frantovo.cz>
Sat, 07 Jun 2014 18:40:51 +0200
changeset 27 9c587bac6a03
parent 12 3770beeed252
child 29 7284f95da10e
permissions -rw-r--r--
analýza: návrh CLI API
     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.
     3 
     4 SAXParserFactory → SAXParser → XMLReader
     5 
     6 Nejdůležitější je XMLReader, tam se provádí vlastní načítání exotického souboru.
     7 
     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(…, …);
    12 
    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);
    17 	
    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.
    20 
    21 Náš SAXParser používá SuperXMLReader, který rozhoduje, který konkrétní parser se použije.
    22 
    23 
    24 Moduly řešit přes Features?
    25 
    26 Vstupní formáty:
    27 	JSON
    28 	INI (sekce + klíč=hodnota)
    29 	CSV (hlavičky → elementy)
    30 	Javovské Properties a podobné (pozor na komentáře)
    31 	HTML (zprasené, atributy bez uvozovek, atd.)
    32 	TXT (co řádek, to element)
    33 	ASN.1
    34 	Linuxové konfiguráky, API a příkazy – /etc, /proc, /sys …
    35 	
    36 	
    37 CLI API:
    38 	--input-file <filename>
    39 	--input-stdin <systemId>
    40 	--input-url <systemId>
    41 	
    42 	--system-id <systemId> (override SystemId from file/url)
    43 	
    44 	--reader-property <key> <value>
    45 	
    46 	--default-namespace-uri <uri>
    47 	--default-namespace-prefix <prefix>
    48 	
    49 	--output-file <filename>
    50 	
    51 	--action <pluginName>
    52 	
    53 	--action-property <key> <value>
    54 	--action-properties <array> (last option, opaque data follows)
    55 
    56 
    57 
    58 Odkazy:
    59 	TagSoup: http://mercury.ccil.org/~cowan/XML/tagsoup/
    60 	HotSAX: http://hotsax.sourceforge.net/ – HotSAX is a small fast SAX2 parser for HTML, XHTML and XML. 
    61 	XOM: http://www.cafeconleche.org/XOM/ – XOM is fairly unique in that it is a dual streaming/tree-based API.
    62 	Jericho: http://jericho.htmlparser.net/docs/javadoc/net/htmlparser/jericho/StreamedSource.html – Iterátor
    63 	SAX → DOM: http://www.java2s.com/Code/Java/XML/SaxtoDOMconverter.htm
    64 	XMLUnit: http://xmlunit.sourceforge.net/api/org/custommonkey/xmlunit/TolerantSaxDocumentBuilder.html
    65 	ASN.1
    66 		http://www.lupa.cz/clanky/asn-1-8211-koncept-abstraktni-syntaxove-notace/
    67 		http://www.root.cz/clanky/analogie-asn1/
    68 		http://www.research.ibm.com/trl/projects/xml/xss4j/samples/asn1/Translator.java
    69 		http://www.bouncycastle.org/  – Pěkná knihovna pro práci s ASN.1 v Javě je součástí Bouncy Castle Crypto APIs
    70 		https://en.wikipedia.org/wiki/XML_Encoding_Rules – XML Encoding Rules (XER)