Lomapuuhastelua: XML:n käsittelyä Javassa

Tänään oli mielenkiintoinen päivä XML:n parissa, lukien ja palauttaen mieleen taas mitä kaikkea mihinkin kuuluu ja miksi.

Syy tähän opiskeluun oli tietysti webserviceissä, joiden parissa pyöriskellessä pää alkoi pyörimään paikoillaan ja oli pakko palauttaa mieliin XML-schemojen sisältö ja sitä kautta myös miten XPath-kyselyitä tehdään.

Luin Safarista selaillen mm. XML Schema ja Java and XML -kirjoja ja pikkuhiljaa muistiin palautuikin asioita, ja toisaalta moni asia esimerkiksi schemojen kohdalla selkiintyi.

Kirjoitin myös lyhyen apuohjelman, jolla saan luettua html-sivusta haluamani otsikkotasot – jotta voin tehdä esimerkiksi indeksisivun kokonaisesta hakemistosta satunnaisia tallennettuja html-sivuja. Pohjana käytin googlettamaani reseptiä jossa suositeltiin TagSoupin, JDomin ja Jaxenin käyttöä ( http://www.hackdiary.com/archives/000029.html ) – ja kuinka ollakaan niillä työskentely oli jopa äärimmäisen mukavaa.


SAXBuilder builder = new SAXBuilder("org.ccil.cowan.tagsoup.Parser"); // build a JDOM tree from a SAX stream provided by tagsoup
Document doc = builder.build(file);

JDOMXPath titlePath = new JDOMXPath("//h:h3 | //h:h2 | //h:h1");
titlePath.addNamespace("h","http://www.w3.org/1999/xhtml");
List nodes = titlePath.selectNodes(doc);
for(Object node: nodes){
Element element = (Element) node;
element.getText();
}

http://mercury.ccil.org/~cowan/XML/tagsoup/

http://jdom.org/downloads/docs.html

http://jaxen.org/

Tulin myös kokeilleekseni Eclipsen XML-Schema-editoria ja positiivisesti yllättyneeksi. Sehän on hyvä.

This entry was posted in java, programming. Bookmark the permalink.

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out / Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out / Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out / Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out / Muuta )

Muodostetaan yhteyttä palveluun %s