Avoin data - Pääteohjaus 7

Avoin data

Käytetään muiden tekemiä XML-dokumentteja ja WWW-sivuja tiedonlähteenä.

DOM-rajapinta on tuttu jo TIEA2120 WEb-käyttöliittymien ohjelmointi -kurssilta. Jos olet unohtanut niin kertaa Document Object Model (DOM) ja Javascript ja DOM. Tässä pääteohjauksessa opetellaan DOM-rajapinnan käyttäminen Python-ohjelmointikielellä.

Ulkoisen XML-datan sisällyttäminen omalle sivulle

XML ja nimiavaruudet

XML-dokumenttiin voi olla sisällytetty elementtejä useasta eri nimiavaruudesta (namespace). Tämä täytyy osata huomioida dokumentin sisältöä käsiteltäessä. Käytetystä kirjastosta riippuen voi joutua käyttämään getElementsByTagNameNS-funktiota tavallisen getElementsByTagName-funktion sijaan. Esim.

mi = doc.getElementsByTagNameNS("http://www.w3.org/1998/Math/MathML", "mi")

Käyttämällä nimiavaruuden osaavaa versiota varmistaa, että ei ainakaan saa vahingossa tulokseen vääriä elementtejä. Eri nimiavaruuksissa voi olla samannimisiä elementtejä.

Joskus XML-dokumenteissa on myös CDATA-osioita, joiden parsiminen täytyy joillakin kirjastoilla tehdä poikkeavasti:

if node.firstChild.nodeName == "#cdata-section":
    print node.firstChild.data
else:
    print node.firstChild.nodeValue

ElementTree

Voit halutessasi opetella käyttämään myös ElementTree XML API-rajapintaa. ElementTree-rajapinnan käyttäminen on hieman yksinkertaisempaa kuin DOM-rajapinnan. ElementTree-rajapintaa tarvitset, jos joudut parsimaan rakenteeltaan rikkinäisiä html-dokumentteja (tagsoup...). Tällöin käytetään esimerkiksi BeautifulSoup-kirjastoa, joka toteuttaa ElementTree-rajapinnan.

Cloud SQL

Ei käytössä kurssilla. Voit hyödyntää omiin juttuihin.

Huom. Ei pysty käyttämään appengine-sovelluksilla, jos käyttää python 2.7 -tulkkia. Voisi periaatteessa käyttää myös users.jyu.fi:ssä olevalla sovelluksella, mutta it-palvelut on estänyt tämän. Vuoden 2019 kurssilla ei siis vielä käytetä Cloud SQL -tietokantaa. Otetaan käyttöön vuonna 2020 samalla kun siirrytään Python 3 -tulkkiin.

Käyttäjien kommentit

Kommentoi Lisää kommentti
Kurssimateriaalien käyttäminen kaupallisiin tarkoituksiin tai opetusmateriaalina ilman lupaa on ehdottomasti kielletty!
http://appro.mit.jyu.fi/tiea2080/ohjaus/ohjaus7/
© 2019-04-08 10:57:59
Informaatioteknologia - Jyväskylän yliopiston informaatioteknologian tiedekunta