Ihmettelen kovin koko XML:n tarkoitusta, koska varsinaisen datan sijaan se sisältää suurimmalta osin pelkkää roskaa. Kuinka esimerkiksi saadaan helpoiten talteen lämpötilatiedot tästä linkistä: http://opendata.fmi.fi/wfs/fin?service=WFS&version=2.0.0&request=GetFeature&storedquery_id=fmi::observations::weather::timevaluepair&fmisid=101520&
Ovat siis kätketty tälläiseen, ja tuosta tarvittaisiin vain aikatieto ja arvo. Yksittäisiä arvoja on siis kymmeniä.
<wml2:point><wml2:MeasurementTVP><wml2:time>2019-04-19T00:50:00Z</wml2:time><wml2:value>3.6</wml2:value></wml2:MeasurementTVP></wml2:point>
XML sekamelskan perkaus
7
1258
Vastaukset
Suorita tämä koodi:
var wmlNs = "http://www.opengis.net/waterml/2.0";
var allPoints = document.getElementsByTagNameNS(wmlNs, "point");
var clearData = Array.from(allPoints).map( p=>{
var timeEl = p.getElementsByTagNameNS(wmlNs, "time")[0];
var time = timeEl ? timeEl.textContent : "";
var valueEl = p.getElementsByTagNameNS(wmlNs, "value")[0];
var value = valueEl ? valueEl.textContent : "";
return {time: time, value: value}
});
Nyt sinulla pitäisi olla kaikki 936 arvoa listassa clearData objekteina {time, value}.- Anonyymi
Olen nyt yrittänyt tapella Pythonin ja XPathin kanssa, mutta en ole keksinyt mitä pitäisi laittaa xpathiin. Erroria pukkaa esim. jos yrittää päästä toiseen tasoon saakka, johon pääsin kyllä jsonin kautta pyöräyttämällä myös, mutta siitä ei saanut sitten purettua enempää.
Tämä ei siis toimi:
import requests
from lxml import etree
url = "http://opendata.fmi.fi/wfs/fin?service=WFS&version=2.0.0&request=GetFeature&storedquery_id=fmi::observations::weather::timevaluepair&fmisid=101520&"
data = requests.get(url)
root = etree.XML(data.text.encode("utf-8"))
results = root.xpath("/wfs:FeatureCollection/wfs:member")
Tästä yritin saada apuja: https://lxml.de/xpathxslt.html
Taidan tehdä niin että otan stringinä käsittelyyn ja puran manuaalisesti. On tuo XML kyllä ihme sekamelskaa. - Anonyymi
Anonyymi kirjoitti:
Olen nyt yrittänyt tapella Pythonin ja XPathin kanssa, mutta en ole keksinyt mitä pitäisi laittaa xpathiin. Erroria pukkaa esim. jos yrittää päästä toiseen tasoon saakka, johon pääsin kyllä jsonin kautta pyöräyttämällä myös, mutta siitä ei saanut sitten purettua enempää.
Tämä ei siis toimi:
import requests
from lxml import etree
url = "http://opendata.fmi.fi/wfs/fin?service=WFS&version=2.0.0&request=GetFeature&storedquery_id=fmi::observations::weather::timevaluepair&fmisid=101520&"
data = requests.get(url)
root = etree.XML(data.text.encode("utf-8"))
results = root.xpath("/wfs:FeatureCollection/wfs:member")
Tästä yritin saada apuja: https://lxml.de/xpathxslt.html
Taidan tehdä niin että otan stringinä käsittelyyn ja puran manuaalisesti. On tuo XML kyllä ihme sekamelskaa.TÄSSÄ PYTHON3 MALLIA
Korvaa ??? tiedoston osoitteella.
from xml.dom import minidom
import urllib.request
url = 'http://???'
urllib.request.urlretrieve(url, "data.xml")
mydoc = minidom.parse('data.xml')
items = mydoc.getElementsByTagName('wml2:time')
i=0
for x in items:
print(str(i) ": " items[i].lastChild.data)
i=i 1
Testaa tämä. - Anonyymi
Anonyymi kirjoitti:
TÄSSÄ PYTHON3 MALLIA
Korvaa ??? tiedoston osoitteella.
from xml.dom import minidom
import urllib.request
url = 'http://???'
urllib.request.urlretrieve(url, "data.xml")
mydoc = minidom.parse('data.xml')
items = mydoc.getElementsByTagName('wml2:time')
i=0
for x in items:
print(str(i) ": " items[i].lastChild.data)
i=i 1
Testaa tämä.Tuo on ihan lupaava lähtökohta, koska tulostaa kaikki ajat kuten pitääkin. Pitäisi vielä se mittausarvo ympätä tuohon.
 - Anonyymi
Anonyymi kirjoitti:
Tuo on ihan lupaava lähtökohta, koska tulostaa kaikki ajat kuten pitääkin. Pitäisi vielä se mittausarvo ympätä tuohon.
Arvot mukaan vaikka näin:
from xml.dom import minidom
import urllib.request
url = ???'
urllib.request.urlretrieve(url, "data.xml")
mydoc = minidom.parse('data.xml')
times = mydoc.getElementsByTagName('wml2:time')
values = mydoc.getElementsByTagName('wml2:value')
i=0
for x in times:
print(str(i) ": " times[i].lastChild.data \
" " values[i].lastChild.data)
i=i 1 - Anonyymi
Anonyymi kirjoitti:
Arvot mukaan vaikka näin:
from xml.dom import minidom
import urllib.request
url = ???'
urllib.request.urlretrieve(url, "data.xml")
mydoc = minidom.parse('data.xml')
times = mydoc.getElementsByTagName('wml2:time')
values = mydoc.getElementsByTagName('wml2:value')
i=0
for x in times:
print(str(i) ": " times[i].lastChild.data \
" " values[i].lastChild.data)
i=i 1Kiitokset! Nyt ymmärsin tuon logiikan. Hämäsi hieman tuo käyttämäsi for-lauseke.
 
Ketjusta on poistettu 1 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
IL - PerSut tykittää - Vaaralliset tappajat vankilaan jopa loppuelämäksi!!
Entistä rajumpi elinkautinen tulee – Vaaralliset tappajat vankilaan jopa loppuelämäksi Henkirikosten uusijat voidaan ja3913918Päivi Räsänen vs. Abbas Bahmanpour
(Bahmanpour on imaami Helsingissä) Syyttäjä siis jahtaa edelleen Räsästä tämän H-puheista, joissa hän on ilmeisesti vaa1545481Demokratian uhka: Perussuomalaiset ja polarisoiva "me ja muut" -ajattelu
Laurence Rees varoittaa, kuinka demokratian heikkeneminen ja autoritaaristen liikkeiden nousu voidaan liittää "me ja muu2005089SIELTÄ SE TULI: Kepu-Kurvinen: "Emme enää lähde punavihreään hallitukseen"
Nyt muuten nauretaan loppuviikko, että tähänkö kaatui Lindtmanin pääministerihaaveet. "Antti Kurvisen mukaan puolue ei864278"Rauhanomainen" miekkari hesassa: "Eläköön aseellinen vastarinta" - lakana
Kyseessä on Suomen Palestiinalaisten yhdistyksen viime perjantaina järjestämä ”Hiljainen kynttiläkulkue Palestiinalaiste873561Palkansaajan oikeus nauttia työuransa hedelmistä
Työeläkejärjestelmä on verrattavissa pyramidihuijaukseen, jossa alemmat tasot, eli nykyiset palkansaajat, toimivat maksa1093058Äärioikeistopurran nukke Petteri Lapanen paniikissa
Kun Suomen historian paras pääministeri antoi vankan lausunnon, kuinka "keskustelu politiikassa on käpertynyt lähinnä va63049HS - Sanna Marinin kirja on priimaluokan vedätys!
Kirja-arvio|Toivo on tekoja tulisi ensisijaisesti nähdä maineen rahallisen hyödyntämisen voimaannuttavana merkkipaaluna.142939Vanhat miehet eivät muista
Niinistö muistaa vain Marinin hölmistyneen ilmeen, mutta ei miksi möllötti sen näköisenä. Vanhanen taas ei muuten vaan122801Monella äärivasemmistolaisella C-paperit armeijasta
Kuinka kävisi sodan tullen noille? Puolustusvoimat huomauttaa, että C-luokituksen saaneiden sijoittumisesta sodan aikan392517