[php] xml parsen, attributen + values

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Freemann
  • Registratie: Januari 2002
  • Niet online

Freemann

CO2 Warmtepomp + VentilatieWTW

Topicstarter
Ben bezig met het inladen van een xml-feed.

Nu is de feed als volgt opgebouwd:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="UTF-8"?>
<data>
    <record>
        <column name="title"><![CDATA[xx]]></column>
        <column name="longitude"><![CDATA[x.56041]]></column>
        <column name="latitude"><![CDATA[x.4083]]></column>
    </record>
    <record>
        <column name="title"><![CDATA[xxx]]></column>
        <column name="longitude"><![CDATA[xx.56041]]></column>
        <column name="latitude"><![CDATA[xx.4083]]></column>
    </record>
</data>


Nu heb ik de volgende code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
$xmlDoc = new DOMDocument();
$xmlDoc->load( $file );

$searchNode = $xmlDoc->getElementsByTagName("record");
foreach( $searchNode as $searchNode ){
    $column = $searchNode->getElementsByTagName("column");
    foreach( $column as $column ){
        $attribute_name = $column->getAttribute('name');
        $attribute_value = $column->nodeValue;
    }
    echo "$attribute_name - $attribute_value\n";
}

en dat levert de volgende output:
code:
1
2
latitude - xx.4083 
latitude - xx.9578



Wil echter de volgende output hebben:
code:
1
2
3
4
5
6
7
title:xxx
longitude:xx.56041
latitude:xx.4083

title:xx
longitude:x.56041
latitude:x.4083


Ik krijg dus nu alleen de laatste column met attribute en value te zien en niet alle kolommen met attribute en values.

heb bovenstaande code gemaakt met behulp van:
http://www.php.net/manual/en/domelement.getattribute.php

Wat doe ik fout, kom er ff niet meer uit?

https://www.taltion.nl, https://www.trekhaakkoffer-huren.nl, https://www.fietsendrager-huren.nl, https://www.fietskar-huren.nl


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 10:43

Matis

Rubber Rocket

PHP:
1
2
3
foreach( $column as $column ){ 
// 
}

Dat gaat niet helemaal werken denk ik :P

[ Voor 4% gewijzigd door Matis op 13-07-2010 16:50 ]

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Freemann
  • Registratie: Januari 2002
  • Niet online

Freemann

CO2 Warmtepomp + VentilatieWTW

Topicstarter
Matis schreef op dinsdag 13 juli 2010 @ 16:49:
PHP:
1
2
3
foreach( $column as $column ){ 
// 
}

Dat gaat niet helemaal werken denk ik :P
Tegen beter weten in gewijzigd naar:
searchNodes & searchNode
columns & column

PHP:
1
2
3
4
5
6
7
8
9
foreach( $searchNodes as $searchNode ){
    $columns = $searchNode->getElementsByTagName("column");
    foreach( $columns as $column ){
        $attribute_name = $column->getAttribute('name');
        $attribute_value = $column->nodeValue;
    }
   
    echo "$attribute_name - $attribute_value\n";
}


But exacly the same output....

https://www.taltion.nl, https://www.trekhaakkoffer-huren.nl, https://www.fietsendrager-huren.nl, https://www.fietskar-huren.nl


Acties:
  • 0 Henk 'm!

  • Lye
  • Registratie: Januari 2010
  • Laatst online: 16:10

Lye

Je overschrijft $attribute_name en $attribute_value in die foreach loop, je zult de resultaten moeten opslaan in een array oid, of eerder de output geven.

Acties:
  • 0 Henk 'm!

  • Tharulerz
  • Registratie: April 2009
  • Laatst online: 10-04 05:16
nvm

[ Voor 98% gewijzigd door Tharulerz op 13-07-2010 17:56 ]


Acties:
  • 0 Henk 'm!

  • Freemann
  • Registratie: Januari 2002
  • Niet online

Freemann

CO2 Warmtepomp + VentilatieWTW

Topicstarter
Lye schreef op dinsdag 13 juli 2010 @ 17:54:
Je overschrijft $attribute_name en $attribute_value in die foreach loop, je zult de resultaten moeten opslaan in een array oid, of eerder de output geven.
pfff..... :X

HELD!!!! _/-\o_

Ongelofelijk....

https://www.taltion.nl, https://www.trekhaakkoffer-huren.nl, https://www.fietsendrager-huren.nl, https://www.fietskar-huren.nl


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ja, sorry, maar dit is gewoon een gevalletje Debuggen: Hoe doe ik dat?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Freemann
  • Registratie: Januari 2002
  • Niet online

Freemann

CO2 Warmtepomp + VentilatieWTW

Topicstarter
Mijn excuses.....

Had deze link overigens nog openstaan in een tabblad:
http://stackoverflow.com/...domdocument-object-in-php

Was ik dus al naar opzoek maar wist niet hoe ik een Dom-object kon debuggen....
Dan had ik zelf al kunnen constateren dat alle benodigde gegevens in het object zaten en er dus een fout zat in mijn stukje code. Echter ging ik er nu vanuit dat ik alleen maar de latitude in mijn object had en was eigenlijk opzoek naar de oplossing om alle gegevens in het object te krijgen.


Nogmaals mijn excuses....

[ Voor 22% gewijzigd door Freemann op 13-07-2010 18:51 ]

https://www.taltion.nl, https://www.trekhaakkoffer-huren.nl, https://www.fietsendrager-huren.nl, https://www.fietskar-huren.nl


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
:P Het was me niet te doen om excuses; ik wou je even duidelijk maken dat je dit prima zelf had kunnen oplossen en mocht je dat nog niet geweten hebben (daar leek het wel op) hoe je moest/kunt debuggen dan had je nu een beginpunt gehad ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • fleppuhstein
  • Registratie: Januari 2002
  • Laatst online: 07-09 13:37
Natuurlijk is er ook wel iets te zeggen over de structuur van de XML file. Maar dit kan een eerdere keuze zijn, of een externe beperking. Beter is om dus de relatie van een titel, en een locatie, ook terug te laten komen in je XML.

XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="UTF-8"?>
<data>
    <record>
        <title><![CDATA[xx]]></title>
            <location>
                <longitude><![CDATA[x.56041]]></longitude>
                <latitude><![CDATA[x.4083]]></latitude>
            </location>
    </record>
    <record>
        <title><![CDATA[xx]]></title>
            <location>
                <longitude><![CDATA[x.56041]]></longitude>
                <latitude><![CDATA[x.4083]]></latitude>
            </location>
    </record>
</data>


Zeker als je dan ook gaat werken met DOMXpath. Dit maakt het mogelijk om te query'en op je DOMDocument. Hierbij geeft een logische structuur, ook logische queries. Welke op hun beurt leesbaarheid == onderhoudbaarheid (als dat een woord id) ten goede komen.

Just my 2 cents

Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 17:23

Sebazzz

3dp

Ik denk niet dat de TS invloed heeft op de feed gezien zijn woordkeuze ;)

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • Freemann
  • Registratie: Januari 2002
  • Niet online

Freemann

CO2 Warmtepomp + VentilatieWTW

Topicstarter
Sebazzz schreef op dinsdag 13 juli 2010 @ 23:37:
Ik denk niet dat de TS invloed heeft op de feed gezien zijn woordkeuze ;)
inderdaad, heb het hiermee te doen en helaas is het niet anders..
RobIII schreef op dinsdag 13 juli 2010 @ 22:20:
:P Het was me niet te doen om excuses; ik wou je even duidelijk maken dat je dit prima zelf had kunnen oplossen en mocht je dat nog niet geweten hebben (daar leek het wel op) hoe je moest/kunt debuggen dan had je nu een beginpunt gehad ;)
Snap ik, maar ik wist niet meer waar ik het moest zoeken. het kon voor mijn gevoel op 3 punten (benadering van de XML, DOMobject niet volledig, scriptje) zitten maar kreeg er 2 (benadering van XML (omdat ik de dom niet kon debuggen) en dus ook het dom-object zelf) niet uitgesloten.

Vandaar dat ik hier hulp zocht en het bleek dus dat het dom-object opzich goed was en dus ook de benadering van de XML en dat het probleem heel simpel in het scriptje zat.....

Als je hier al een paar uur mee zit te stoeien en te zoeken dan wil je wel wat hulp hebben op een gegeven moment :)

https://www.taltion.nl, https://www.trekhaakkoffer-huren.nl, https://www.fietsendrager-huren.nl, https://www.fietskar-huren.nl

Pagina: 1