xml2array; Werkt niet zoals hij moet werken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Technisch Ontwikkelaar

Wil jij verantwoordelijk zijn voor de ontwikkeling van diverse projecten? Wij zoeken voor een deze organisatie een Technisch Ontwikkelaar! Jij bent vanaf de eerste ontwerpfase tot en met de start van de bouw betrokken! Dit ontwikkelende bouwbedrijf is een vooruitstrevende organisatie dat zich richt op de nieuwbouw van woningen en appartementen. De projecten variëren daarbij vanaf een tiental woningen of appartementen tot ongeveer 100+ woningen, zowel vanuit een concept als de traditionele bouw. Bij deze organisatie staat duurzaamheid, innovatie en kwaliteit hoog in het vaandel. Omdat zij ervan overtuigd zijn dat deze drie pijlers leiden tot een tevreden afnemer. De

Bekijk vacature »

React native developer

We have received a new investment and therefore want to get started quickly to expand our new app with new features. If you are an expert with react native we would love to have you in our team. Functie-eisen You have at least 4 years of experience developing in React Native apps and... TypeScript, Firebase, GIT, REST, and Swagger. Working together is your second nature Passion for the development profession & high degree of curiosity You speak English You are in the possesion of a Dutch work permit ánd reside in The Netherlands. Unfortunately, our clients do not work with

Bekijk vacature »

Flutter developer Eindhoven

Technology never stops evolving and developing. That is continuous learning is crucial, especially for app developers. Your immediate goal is to immerse yourself in the world of app developing and learn as much as possible. Specialised, or multifunctional like a swiss army-knive. For our client we are looking for somebody with exactly this “always be learning” mindset. You posses decent knowledge on Dart but are looking to grow even further. You are going to work on interesting apps for different clients, together with a team of skilled professionals. Together with them you get the chance to develop both apps and

Bekijk vacature »

Freelance applicatieontwikkelaar (zzp)

Belastingdienst B/cao Startdatum : 2-1-2023 Tijdelijke functie, met optie op vast Aantal uren per week : 36 Standplaats in overleg : Apeldoorn Applicatieontwikkelaar bij het Ministerie van Financiën- Belastingdienst We zoeken een consultant/developer met ervaring in de ontwikkeling van back-end systemen. Als consultant heb je kennis en ervaring met de wijze waarop Open Formulieren is opgezet. Je bent een vraagbaak voor collega’s en deelt waar nodig je kennis. Je hebt ervaring met het werken in een open source omgeving. Je bent thuis in verschillende frameworks of je kunt je die snel eigen maken. Je hebt aantoonbaar ruime kennis van en

Bekijk vacature »

Senior Frontend developer

Wat je gaat doen: Of beter nog, wat wil jij doen? Bij DPA GEOS werken onze consultants als Frontend Developer in Agile teams bij onze klanten en zijn ze verantwoordelijk voor de grotere webapplicaties. Wil jij dit ook, want we zijn op zoek naar enthousiaste Frontend Developers om ons development team te versterken. Je draagt positief bij aan de teamgeest binnen een projectteam je kijkt verder dan je eigen rol. Eventueel begeleid je ook andere ontwikkelaars in het softwareontwikkelproces. Je gaat webapplicaties maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit

Bekijk vacature »

SQL database ontwikkelaar

Bedrijfsomschrijving Mijn klant is gevestigd in Uithoorn (Noord-Holland) is gespecialiseerd in het aanbieden van complexe technische ICT binnen een niche sector in Nederland. Ze hebben een eigen logistiek ERP pakket ontwikkeld. Deze draait op een MS SQL 2019 Database. Binnen de organisatie werken naast database specialisten ook .NET software ontwikkelaars. Functieomschrijving Mijn klant zoekt een SQL specialist om het database team te versterken. Binnen deze functie krijg je vooral te maken met het ontwikkelen van nieuwe database functionaliteiten (stored procedures, functions, tabellen, etc), "database tuning" en het uitfaseren van oude database objecten. Je komt binnen een team te werken met

Bekijk vacature »

Mendix Consultant / Developer

Dit ga je doen Het in kaart brengen en analyseren van de functionele wensen van de klant rondom Mendix applicaties; Het fungeren als sparringpartner voor de (interne) klanten; Het opstellen van requirements en het vertalen hiervan naar technische mogelijkheden; Het opstellen van user stories; Het bouwen van de Mendix applicaties in samenwerking met jouw team of zelfstandig; Het testen van op te leveren software en het zorg dragen voor de implementatie; Trainen van gebruikers in het gebruik van de applicatie; Werken in een Agile omgeving. Hier ga je werken De organisatie begeeft zich in de retail branche en focust zich

Bekijk vacature »

Freelance senior ICT ontwikkelaar (zzp)

Belastingdienst B/cao Startdatum inzet: 9-1-2023 Einddatum inzet: 31-12-2023 Uren per week: 36,00 Standplaats: Apeldoorn Max tarief: € 86,00 Team LIV is op zoek naar een enthousiaste, flexibele, multitaskende en hands-on ontwikkelaar met veel ervaring in het gedeeltelijk of volledig zelfstandig bepalen van ontwikkel- en realisatie aanpak. Onze nieuwe collega moet in staat zijn te werken in een hectische omgeving waarbij er sprake is van zeer verschillen realisatietrajecten voor wat betreft(technische)diepgang, startmoment (wel/geen beschrijvingen beschikbaar) en klantcontact. De gekozen ontwikkelmethodiek dient passend te zijn voor het op te lossen vraagstuk waarbij samenwerking met de testengineer in relatie tot Systeem integratie test

Bekijk vacature »

(Senior) Frontend Developer

Functieomschrijving Houd jij van afwisseling, uitdaging, en werken aan oplossingen die echt waarde toevoegen? Als frontend developer binnen Randstad Groep Nederland speel je een onmisbare rol in onze dienstverlening. Samen met je collega’s ontwikkel je de online omgeving ter ondersteuning van onze B2B dienstverlening - portals die miljarden Euros verwerken. Wat ga je doen? Als frontend developer sluit je aan bij een van twee teams: Corporate Client Solutions (CCS), met focus op grote corporate klanten en meer (semi)maatwerk, of Online Client Solutions (OCS), met focus op MKB segment. Beide teams werken agile en bestaan naast een product owner en scrum

Bekijk vacature »

Senior Java developer (backend)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Front-end Developer Angular

Dit ga je doen Als Front-end Developer zullen jouw taken voornamelijk bestaan uit: Het (door)ontwikkelen van applicaties op het SaaS platform (met o.a. TypeScript, Angular 12, CSS); Het uitvoeren van code reviews; Het meebeslissen over de inzet van bestaande en nieuwe controls en deze onderbrengen in een referentie-applicatie; Het bijdragen aan de professionalisering en verbetering van de applicaties; Het onderhouden van contact met verschillende stakeholders (ook buiten Nederland). Hier ga je werken Wat ga ik doen? Als Front-end Developer ga jij je focussen op het ontwikkelen van applicaties op het SaaS platform van een organisatie die software ontwikkelt voor de

Bekijk vacature »

Senior Java developer (backend)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Full-Stack Developer

Dit ga je doen Ontwikkelen, integreren, implementeren en optimaliseren van de cloudbased (Azure) SaaS-oplossing(en) die de organisatie levert; Bijdragen aan de migratie van de oude stack naar een modernere .NET (core/Angular) stack; Maatwerkoplossingen ontwikkelen en/of het configureren van de generieke SaaSoplossing zodat deze voldoet aan de wensen van de diverse klanten; Onderdeel uitmaken van het team dat nieuwe oplossingen ontwikkelt en implementeert; Betrokken bij het gehele ontwikkelproces, van sparren over functionele eisen tot testen en het oplossen van (eventuele) incidenten. Hier ga je werken Deze organisatie levert een diversiteit aan cloud-based SaaS-oplossingen ten behoeve van Marketing en e-commerce aan grote

Bekijk vacature »

Freelance senior ICT ontwikkelaar (zzp)

Belastingdienst B/cao Startdatum inzet: 9-1-2023 Einddatum inzet: 31-12-2023 Uren per week: 36,00 Standplaats: Apeldoorn Max tarief: € 86,00 Team LIV is op zoek naar een enthousiaste, flexibele, multitaskende en hands-on ontwikkelaar met veel ervaring in het gedeeltelijk of volledig zelfstandig bepalen van ontwikkel- en realisatie aanpak. Onze nieuwe collega moet in staat zijn te werken in een hectische omgeving waarbij er sprake is van zeer verschillen realisatietrajecten voor wat betreft(technische)diepgang, startmoment (wel/geen beschrijvingen beschikbaar) en klantcontact. De gekozen ontwikkelmethodiek dient passend te zijn voor het op te lossen vraagstuk waarbij samenwerking met de testengineer in relatie tot Systeem integratie test

Bekijk vacature »

Fullstack TypeScript developer voor innovatieve so

Bedrijfsomschrijving Deze organisatie maakt softwareoplossingen voor verschillende soorten bedrijven. De bedrijven schakelen hen in wanneer er iets nieuws ontwikkelt moet worden. Het fijne hieraan is dat je niet constant bezig bent met oude software en alleen maar onderhoud werk aan het verrichten bent. Innovatie staat erg hoog in het vaandel, je zult dus met nieuwe technieken aan de slag gaan. Ze hebben klanten in vele branches zitten, zoals retail, finance, gezondheid en onderwijs. De diverse klanten zorgen voor diverse werkzaamheden, zodat het nooit een saaie baan zal worden. Doordat alle projecten van A tot Z ontwikkeld worden, zul je ook

Bekijk vacature »
ToySoldier ZegIkNiet

ToySoldier ZegIkNiet

19/08/2009 14:21:00
Quote Anchor link
Hey,

Ik gebruik deze functie om een XML bestand uit te lezen.

Even dit .xml bestand gebruiken als voorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?xml version="1.0" encoding="ISO-8859-1" ?>
<phraseset>
    <phrase id="testing">Testing</phrase>
</phraseset>



Als ik 1 zin heb kan ik hem uitlezen als $xPhraseset['phraseset']['_c']['phrase'], maar als er meerdere zijn krijg je ['phrase'][0], ['phrase'][1] etc...

Ik wil dat deze altijd op die 2e manier gedaan word, maar wat ik ook aanpas, hij doet het gewoon niet :s

Weet iemand hoe ik dit oplos?
 
PHP hulp

PHP hulp

03/02/2023 15:33:24
 
ToySoldier ZegIkNiet

ToySoldier ZegIkNiet

20/08/2009 23:56:00
Quote Anchor link
Niemand?
 
Wim E

Wim E

21/08/2009 01:03:00
Quote Anchor link
Hoi ToySoldier, zou je je vraag misschien kunnen verduidelijken? Evt wat code posten. Als je met arrays werkt gebruik je foreach. Je kunt een lege string aanmaken en deze doormiddel van een foreach of een while(als uit db komt) vullen en zo xml bestandje maken.
 
ToySoldier ZegIkNiet

ToySoldier ZegIkNiet

21/08/2009 09:34:00
Quote Anchor link
@ Wim

De code zelf staat al in de start post :)

Je hebt wat ik wil niet helemaal begrepen; Ik gebruik deze functie om een XML bestand uit te lezen en om te zetten in een array. Ik heb de functie echter ook maar ergens van het internet afgeplukt. Als een xml-setje (zoals in mijn voorbeeld 'phraseset') 1 element heeft dan staat dan kan je hem uitlezen als $xResultaat['phraseset']['_c']['phrase'], maar als hij meerdere resultaten heeft dan kan je hem uitlezen als $xResultaat['phraseset']['_c']['phrase'][0], $xResultaat['phraseset']['_c']['phrase'][1] etc...

Mijn bedoeling is dat hij hem altijd op die 2e manier zet, dus altijd bij $xResultaat['phraseset']['_c']['phrase'][0] begint, i.p.v. bij $xResultaat['phraseset']['_c']['phrase'].
 
Krop Kroppyer

Krop Kroppyer

21/08/2009 13:46:00
Quote Anchor link
Ik weet zeker dat het beter en handiger kan, maar ik heb misschien een oplossing:
op regel 89 staat $this->_del_p( $aMNArray );
die functie verwijdert alle ... hoe heten die dingen ook alweer..
als je nog zo'n functie maakt die
- checkt of $xResultaat['phraseset']['_c']['phrase'] een array is
- zo ja, gewoon laten voor wat-ie is
- zo nee, doe je zoeits: $xResultaat['phraseset']['_c']['phrase'][0] = $xResultaat['phraseset']['_c']['phrase'];

Hieronder heb ik even snel iets gemaakt dat zou kunnen werken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
function veranderArray($p_aXMLArray)
{

  foreach($p_aXMLArray as $sKey1 => $aValue1)
  {

    foreach($aValue['_c'] as $sKey2 => $value2)
    {

      if(!is_array($value2))
      {

        $p_aXMLArray[$sKey1]['_c'][$sKey2][0] = $value2;
      }
    }
  }
}

?>
 
ToySoldier ZegIkNiet

ToySoldier ZegIkNiet

21/08/2009 16:17:00
Quote Anchor link
@ Huib Donkers
Zoiets werkt vast wel (heb het nog niet geprobeerd) maar ik kom er niet uit waar het in de functie zelf moet staan, want ik heb als het even kan liever dat hij het in de functie direct goed zet (zodat het op verdere niveau's ook nog werkt)
 
ToySoldier ZegIkNiet

ToySoldier ZegIkNiet

23/08/2009 14:46:00
Quote Anchor link
*bump*
 
ToySoldier ZegIkNiet

ToySoldier ZegIkNiet

25/08/2009 14:55:00
Quote Anchor link
*bump2*
 
Krop Kroppyer

Krop Kroppyer

26/08/2009 16:50:00
Quote Anchor link
Ik heb zelf wat geprobeerd, ik begin het een beetje te begrijpen. Mijn veranderArray() functie werkt niet. Want $value2 is hoe dan ook een array

"(zodat het op verdere niveau's ook nog werkt)", ja stom daar had ik aan moeten denken...

wat de code betreft snap ik er nog steeds niet veel van...
omdat ik niet eerg veel weet van XML laat staan van de functies xml_parser_create(), xml_parser_set_option, xml_parse_into_struct en xml_parser_free.

Ik ga morgen (of een andere keer verder kijken)
ik geloof dat je ergens tussen regel 49 en 65 wat moet aan passen.
hieronder nog even de functie zoals ik hem nu test en probeer aan te passen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<?php
function xml2array( $sString )
{

    $xParser = xml_parser_create();
    xml_parser_set_option( $xParser, XML_OPTION_CASE_FOLDING, 0 );
    xml_parse_into_struct( $xParser, $sString, $aVals, $aIndex );
    xml_parser_free( $xParser );
    
    $aMNArray = array();
    $aXMLArray = &$aMNArray;
    
    foreach ( $aVals as $aRow )
    {

        $t = $aRow['tag'];
        if ( $aRow['type'] == 'open' )
        {

            if ( isset( $aXMLArray[$t] ) )
            {

                if ( isset( $aXMLArray[$t][0] ) )
                {

                    $aXMLArray[$t][] = array();
                }

                else
                {
                    $aXMLArray[$t] = array( $aXMLArray[$t], array() );
                }

                
                $cv = &$aXMLArray[$t][count( $aXMLArray[$t] ) - 1];
            }

            else
            {
                $cv = &$aXMLArray[$t];
            }

            
            if ( isset( $aRow['attributes'] ) )
            {

                foreach ( $aRow['attributes'] as $k =>$v )
                {

                    $cv['_a'][$k] = $v;
                }
            }

            
            $cv['_c'] = array();
            $cv['_c']['_p'] = &$aXMLArray;
            $aXMLArray = &$cv['_c'];
        }

        elseif ( $aRow['type'] == 'complete' )
        {

            if ( isset( $aXMLArray[$t] ) )
            {

                if ( isset( $aXMLArray[$t][0] ) )
                {

                    $aXMLArray[$t][] = array();
                }

                else
                {
                    $aXMLArray[$t] = array( $aXMLArray[$t], array() );
                }

                
                $cv = &$aXMLArray[$t][count( $aXMLArray[$t] ) - 1];
            }

            else
            {
                $cv = &$aXMLArray[$t];
            }

            
            if ( isset( $aRow['attributes'] ) )
            {

                foreach ( $aRow['attributes'] as $k => $v )
                {

                    $cv['_a'][$k] = $v;
                }
            }

            $cv['_v'] = ( isset( $aRow['value'] ) ? $aRow['value'] : '' );
        }

        elseif ( $aRow['type'] == 'close' )
        {

            $aXMLArray = &$aXMLArray['_p'];
        }
    }

    
    return $aMNArray;
}


$sString =
'<?xml version="1.0" encoding="ISO-8859-1" ?>
<phraseset>
    <phrase id="testing">Testing</phrase>
    <phrase id="testing2">testing2</phrase>
        <phraseset2>
            <phrase2 id="test">Test</phrase2>
        </phraseset2>
</phraseset>'
;
print_r(xml2array($sString));
?>
Gewijzigd op 01/01/1970 01:00:00 door Krop Kroppyer
 
Krop Kroppyer

Krop Kroppyer

27/08/2009 16:28:00
Quote Anchor link
HAHA gevonden! :P geloof ik...

ik heb het niet uitgebreid getest, ik heb eigenlijk maar een keer getest met een voorbeeldje... maar als je op regel 64 hierboven "$cv = &$aXMLArray[$t][];" ipv "$cv = &$aXMLArray[$t];" zet dan lijkt het te doen wat je wilt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
XML:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<phraseset>
    <phrase id="testing">Testing</phrase>
    <phrase id="testing2">testing2</phrase>
    <phrase id="testing3">testing3</phrase>
    <phrase id="testing4">testing4</phrase>
        <phraseset2>
            <phrase2 id="test">Test</phrase2>
        </phraseset2>
</phraseset>

resultaat xml2array():
Array
(
    [phraseset] => Array
        (
            [_c] => Array
                (
                    [_p] => Array
                        (
                            [phraseset] => Array
 *RECURSION*
                        )

                    [phrase] => Array
                        (
                            [0] => Array
                                (
                                    [_a] => Array
                                        (
                                            [id] => testing
                                        )

                                    [_v] => Testing
                                )

                            [1] => Array
                                (
                                    [_a] => Array
                                        (
                                            [id] => testing2
                                        )

                                    [_v] => testing2
                                )

                            [2] => Array
                                (
                                    [_a] => Array
                                        (
                                            [id] => testing3
                                        )

                                    [_v] => testing3
                                )

                            [3] => Array
                                (
                                    [_a] => Array
                                        (
                                            [id] => testing4
                                        )

                                    [_v] => testing4
                                )

                        )

                    [phraseset2] => Array
                        (
                            [_c] => Array
                                (
                                    [_p] => Array
 *RECURSION*
                                    [phrase2] => Array
                                        (
                                            [0] => Array
                                                (
                                                    [_a] => Array
                                                        (
                                                            [id] => test
                                                        )

                                                    [_v] => Test
                                                )

                                        )

                                )

                        )

                )

        )

)


Ik geloof dat er van regels 51-58 alleen maar regel 57 over hoeft te blijven omdat isset( $aXMLArray[$t][0] ) altijd ONWAAR is.
 
ToySoldier ZegIkNiet

ToySoldier ZegIkNiet

27/08/2009 19:57:00
Quote Anchor link
@ Huib Donkers
Die is het, perfect! En dat met 2 haakjes :D
Dankje wel :D
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.