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
1135
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
Mies, miksi et vaikuta halukkaalta?
Ihmeellistä käytöstä mieheltä. Toki et ole mikään teinipoika enää.1031697- 2101537
Ikävä on häntä
Josta on tullut niin tärkeä ja rakas. Olisinko onnellinen hänen kanssaan. Ne rakastavat silmät jotka mua katsoo aina jos591020Minkä kultakimpaleen
Menetän jos en saa häntä. Joku muu saisi nauttia siitä hellyydestä, huumorista ja intohimosta. Ehkä hän ymmärtää nyt mik311000Terveystalon lääkärit ylilaskuttaneet
Tämän pörriäiset osaavat, laskuttamisen. Terveystalo myöntää asian. https://www.hs.fi/suomi/art-2000011134269.html "K58855En kai koskaan saa sinua
Koska et usko että riitäisit minulle. Olet aina pitänyt itseäsi liian risana ja heikkona. Katkot korkeutesi, ja poraat k51794Helppo selvittää onko oma täällä
Laittaa yhden selvän kysymyksen ja jos kukaan ei osaa vastata, niin oikea ei ole täällä. Saa käyttää vapaasti hyödykse49785Tykkäsit nainen
Aina eniten lähetyssaarnaajassa, muistan miten nautit!😎😚 meidän pitää päästä vielä kokemaan se.36735Kerroppas nyt
M mies, että kenestä sinä oikein tykkäät, niin saadaan tämä asia muillekin selväksi 😉58735The Summit Suomi: Maxie avaa hyytävästä tilanteesta kuvauksissa: "Veri roiskui ja tajusi, että..."
Oletko seurannut The Summit Suomea? Tykkäätkö vai et tai mitä mieltä ylipäätään olet sarjasta? Moni katsoja on kaikonnut5732