Versio

xml her-bouwen

Overzicht Reageren

Wesley Overdijk

wesley Overdijk

03/07/2010 21:06:12
Quote Anchor link
Beste,

Ik zit met een klein probleem. Ik heb namelijk een set xml files waar ik mee moet werken. Xml file type 1 is perfect, maar type 2 niet. *
Nu wil ik dus, in plaats van alles op 1 regel, ervoor zorgen dat het er uit komt te zien als type 1. Ik heb echter geen idee hoe ik dit moet doen. Ik dacht aan regex, maar dat is over de top. Toen dacht ik om over alle elementen heen te loopen, en zo dan een nieuwe lijst samen te stellen. Dit liep niet zoals ik wou **.

Is er iemand met een idee, hoe ik dit kan oplossen? Alvast bedankt :)


*
type 1:
<tag>
<tag>value</tag>
</tag>

type 2:
<tag><tag>value</tag></tag>


**
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
<?php
class xmlTestje
{
    public function test($xmlFile)
    {
          
        try
        {
            $sxi = new SimpleXMLIterator($xmlFile, NULL, true);
        }

        catch(Exception $e)
        {

            echo $e->getMessage();
        }
                                    
        foreach ( $sxi as $node=>$value )
        {
                    
            if($value->hasChildren())
            {

                //En hier gaat het mis. Ik krijg hier false terug,
                //terwijl er wel children aanwezig zijn. Als ik B.v. doe:
                //$value->children(); Dan krijg ik netjes alle children terug...

                echo $node." :<br />";    
                $this->test($value);  
            }

            else
            {
                echo "$node : $value<br />";  
            }            
        }                      
    }    
}
[
/code]
Gewijzigd op 03/07/2010 21:06:36 door Wesley Overdijk
 
PHP hulp

PHP hulp

25/05/2012 19:51:57
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Karl Karl

Karl Karl

03/07/2010 21:58:52
 
Wesley Overdijk

wesley Overdijk

03/07/2010 21:59:47
Quote Anchor link
Al geprobeerd, wat dus niet echt werkt *zoals je link :P*
 
Karl Karl

Karl Karl

03/07/2010 22:05:12
Quote Anchor link
Kan je de bestanden geven?
Edit:
Kut ubb parser:
http://php.net/class.domdocument#domdocument.props.formatoutput
Edit2:
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
<?php
$string1
= <<<EOD
<?xml version="1.0" encoding="iso-8859-1" ?>
<painting>
  <img src="madonna.jpg" alt='Foligno Madonna, by Raphael'/>
  <caption>This is Raphael's "Foligno" Madonna, painted in
    <date>1511</date>–<date>1512</date>.
  </caption>
</painting>
EOD
;
$string2 = <<<EOD
<?xml version="1.0" encoding="iso-8859-1" ?><painting><img src="madonna.jpg" alt='Foligno Madonna, by Raphael'/><caption>This isa Raphael's "Foligno" Madonna, paainted hier nog extra tekst dat het echt opvalt in<date>1511</date>–<date>1512</date>.</caption></painting>
EOD
;

$doc = new DOMDocument('1.0', 'iso-8859-1');
$doc->formatOutput = true;
$doc->loadXML($string1);
var_dump($doc->saveXML());
$doc->loadXML($string2);
var_dump($doc->saveXML());

/* Levert:
string(241) "<?xml version="1.0" encoding="iso-8859-1"?>
<painting>
  <img src="madonna.jpg" alt="Foligno Madonna, by Raphael"/>
  <caption>This is Raphael's "Foligno" Madonna, painted in
    <date>1511</date>–<date>1512</date>.
  </caption>
</painting>
"
string(276) "<?xml version="1.0" encoding="iso-8859-1"?>
<painting>
  <img src="madonna.jpg" alt="Foligno Madonna, by Raphael"/>
  <caption>This isa Raphael's "Foligno" Madonna, paainted hier nog extra tekst dat het echt opvalt in<date>1511</date>–<date>1512</date>.</caption>
</painting>
"
*/

?>

Zo wil je het toch?
Gewijzigd op 03/07/2010 22:34:28 door Karl Karl
 
Wesley Overdijk

wesley Overdijk

04/07/2010 00:00:18
Quote Anchor link
Niet helemaal. Ik kan de bestanden niet geven, zijn namelijk vertrouwelijke gegevens. Maar het idee is dat het xml bestand alles op 1 regel heeft *de export van het programma dat daar voor zorgt is niet helemaal 100%...*

dus:

<Verzendingen><Verzending><KlantA><fische_12345><a_12345>Voornaam</a_12345><b_12345>Totaal binnengehaald</b_12345><c_12345>Netto inkomen</c_12345></fische_12345></klantA></Verzending></Verzendingen>

Moet worden:

<Verzendingen>
<Verzending>
<KlantA>
<fische_12345>
<a_12345>Voornaam</a_12345>
<b_12345>Totaal binnengehaald</b_12345>
<c_12345>Netto inkomen</c_12345>
</fische_12345>
</klantA>
</Verzending>
</Verzendingen>


Er zit geen vaste opmaak in, en het moet exact op deze manier. *Lang leven koppige software bedrijven*

EDIT:
OMG dit doet wel precies wat ik nodig had. sorry, jou voorbeeld zag er nogal vreemd uit... Maar ja, enorm bedankt!
Gewijzigd op 04/07/2010 00:19:59 door wesley Overdijk
 
Karl Karl

Karl Karl

04/07/2010 09:37:16
Quote Anchor link
Wesley Overdijk op 04/07/2010 00:00:18:
EDIT:
OMG dit doet wel precies wat ik nodig had. sorry, jou voorbeeld zag er nogal vreemd uit... Maar ja, enorm bedankt!


Inderdaad zag het er wat raar uit, mooi dat het nu gelukt is.
 
Niek s

niek s

07/07/2010 09:52:30
Quote Anchor link
Waarom wil je dat? Toch niet om het later te gaan parsen he? Daar kan je dan namelijk veel beter DOM of SimpleXML voor gebruiken namelijk...
 
Karl Karl

Karl Karl

07/07/2010 12:40:44
Quote Anchor link
Niek s op 07/07/2010 09:52:30:
Waarom wil je dat? Toch niet om het later te gaan parsen he? Daar kan je dan namelijk veel beter DOM of SimpleXML voor gebruiken namelijk...



Maar als iets helemaal brak is gescript dat het dus wel deze formatting vereist, ga jij het dan omschrijven?
 



Overzicht Reageren