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
franta-hg@2
     1
Slouží k načítání souborů ve všelijakých syntaxích (json, ini atd.) tak, 
franta-hg@2
     2
aby s nimi následně šlo pracovat jako s XML.
franta-hg@2
     3
franta-hg@2
     4
SAXParserFactory → SAXParser → XMLReader
franta-hg@2
     5
franta-hg@2
     6
Nejdůležitější je XMLReader, tam se provádí vlastní načítání exotického souboru.
franta-hg@2
     7
franta-hg@2
     8
Aby se použila správná (naše) továrna, je potřeba udělat něco z následujícího:
franta-hg@2
     9
	– nastavit systémovou vlastnost „javax.xml.parsers.SAXParserFactory“
franta-hg@2
    10
	– použít Services API… viz JavaDoc k newInstance()
franta-hg@2
    11
	– předat název třídy továrny jako parametr newInstance(…, …);
franta-hg@2
    12
franta-hg@2
    13
Pak načítáme soubory, jako by to bylo XML:
franta-hg@2
    14
	SAXParserFactory továrna = SAXParserFactory.newInstance();
franta-hg@2
    15
	SAXParser parser = továrna.newSAXParser();
franta-hg@2
    16
	parser.parse(new File("data/vstup.json"), h);
franta-hg@2
    17
	
franta-hg@2
    18
Nikde sice nejsou žádné ostré závorky (např. JSON používá {} a []), 
franta-hg@2
    19
ale používáme stejné API a všechny navazující nástroje jako u opravdového XML.
franta-hg@2
    20
franta-hg@2
    21
Náš SAXParser používá SuperXMLReader, který rozhoduje, který konkrétní parser se použije.
franta-hg@2
    22
franta-hg@12
    23
franta-hg@12
    24
Moduly řešit přes Features?
franta-hg@12
    25
franta-hg@12
    26
Vstupní formáty:
franta-hg@12
    27
	JSON
franta-hg@12
    28
	INI (sekce + klíč=hodnota)
franta-hg@12
    29
	CSV (hlavičky → elementy)
franta-hg@12
    30
	Javovské Properties a podobné (pozor na komentáře)
franta-hg@12
    31
	HTML (zprasené, atributy bez uvozovek, atd.)
franta-hg@12
    32
	TXT (co řádek, to element)
franta-hg@12
    33
	ASN.1
franta-hg@12
    34
	Linuxové konfiguráky, API a příkazy – /etc, /proc, /sys …
franta-hg@27
    35
	
franta-hg@27
    36
	
franta-hg@27
    37
CLI API:
franta-hg@27
    38
	--input-file <filename>
franta-hg@27
    39
	--input-stdin <systemId>
franta-hg@27
    40
	--input-url <systemId>
franta-hg@27
    41
	
franta-hg@27
    42
	--system-id <systemId> (override SystemId from file/url)
franta-hg@27
    43
	
franta-hg@27
    44
	--reader-property <key> <value>
franta-hg@27
    45
	
franta-hg@27
    46
	--default-namespace-uri <uri>
franta-hg@27
    47
	--default-namespace-prefix <prefix>
franta-hg@27
    48
	
franta-hg@27
    49
	--output-file <filename>
franta-hg@27
    50
	
franta-hg@27
    51
	--action <pluginName>
franta-hg@27
    52
	
franta-hg@27
    53
	--action-property <key> <value>
franta-hg@27
    54
	--action-properties <array> (last option, opaque data follows)
franta-hg@27
    55
franta-hg@12
    56
franta-hg@12
    57
franta-hg@12
    58
Odkazy:
franta-hg@12
    59
	TagSoup: http://mercury.ccil.org/~cowan/XML/tagsoup/
franta-hg@12
    60
	HotSAX: http://hotsax.sourceforge.net/ – HotSAX is a small fast SAX2 parser for HTML, XHTML and XML. 
franta-hg@12
    61
	XOM: http://www.cafeconleche.org/XOM/ – XOM is fairly unique in that it is a dual streaming/tree-based API.
franta-hg@12
    62
	Jericho: http://jericho.htmlparser.net/docs/javadoc/net/htmlparser/jericho/StreamedSource.html – Iterátor
franta-hg@12
    63
	SAX → DOM: http://www.java2s.com/Code/Java/XML/SaxtoDOMconverter.htm
franta-hg@12
    64
	XMLUnit: http://xmlunit.sourceforge.net/api/org/custommonkey/xmlunit/TolerantSaxDocumentBuilder.html
franta-hg@12
    65
	ASN.1
franta-hg@12
    66
		http://www.lupa.cz/clanky/asn-1-8211-koncept-abstraktni-syntaxove-notace/
franta-hg@12
    67
		http://www.root.cz/clanky/analogie-asn1/
franta-hg@12
    68
		http://www.research.ibm.com/trl/projects/xml/xss4j/samples/asn1/Translator.java
franta-hg@12
    69
		http://www.bouncycastle.org/  – Pěkná knihovna pro práci s ASN.1 v Javě je součástí Bouncy Castle Crypto APIs
franta-hg@12
    70
		https://en.wikipedia.org/wiki/XML_Encoding_Rules – XML Encoding Rules (XER)