Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: XML-parsintaa Javalla PHP:n tyyliin

Macro [04.02.2014 16:37:08]

#

Morjens!

Mulla on iso XML-tiedosto (muutama mega, 60000 riviä...), jota tarvitsisi vähän parsia ja kerätä tavaraa tietokantaan.

Pääelementin sisällä on wfs:member elementtejä, jotka Javalla onnistuu hakea näin:

NodeList wfsMember = doc.getElementsByTagName("wfs:member");
for(int i = 0; i < wfsMember.getLength(); i++) { }

doc tulee taas täältä:

DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document doc = documentBuilder.parse(WeatherDatabaseUpdater.class.getResourceAsStream("wfs.xml"));

PHP:llä olen koko höskän toteuttanut näin:

foreach ($data->children("wfs", true)->member as $member) {
    $dataType = $dataTypes[(string) $member->
                    children("omso", true)->PointTimeSeriesObservation->
                    children("om", true)->observedProperty->
                    attributes("xlink", true)->href];

    foreach ($member->
            children("omso", true)->PointTimeSeriesObservation->
            children("om", true)->result->
            children("wml2", true)->MeasurementTimeseries->
            children("wml2", true)->point as $point) {

        $time = $point->children("wml2", true)->MeasurementTVP->children("wml2", true)->time;
        $value = $point->children("wml2", true)->MeasurementTVP->children("wml2", true)->value;

        $data[$dataType][] = array($time, $value)
    }
}

Miten Javalla pystyn ketjuttamaan noita elementtejä, kuten vaikka toisella rivillä, kun haen $dataType-muuttujaan arvon, tai toisessa foreach-silmukassa?`

Tarkoitus olisi tallentaa tuo data tietokantaan, mitä saan parsittua tuolta.

Pastettelin tiedoston alkua Pastebiniin. Ei mennyt kaikki, kun kokorajoitus oli 0,5 MB. http://pastebin.com/G4RRDzcP

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta