+ Antworten
Ergebnis 1 bis 11 von 11

Thema: PHP4] XML-Datei auslesen

  1. #1
    TP-Senior Moritz macht sich hier sehr viel Mühe
    Registriert seit
    Nov 2002
    Beiträge
    289

    PHP4] XML-Datei auslesen

    Hallo!

    ich habe leider noch keinerlei Erfahrungen was XML angeht, nur um schon einmal vorzuwarnen

    Ich habe eine XML-Datei, die wie folgt aussieht:
    Code:
    <?xml version="1.0"?>
    <bestaende>
      <bestaende>
        <artikel artnr="401017">
          <bestand>nein</bestand>
        </artikel>
        <artikel artnr="401167">
          <bestand>nein</bestand>
        </artikel>
        <artikel artnr="401171">
          <bestand>nein</bestand>
        </artikel>
        <artikel artnr="401748">
          <bestand>nein</bestand>
        </artikel>
        <artikel artnr="401791">
          <bestand>nein</bestand>
        </artikel>
        <artikel artnr="402127">
          <bestand>ja</bestand>
        </artikel>
        <artikel artnr="404398">
          <bestand>nein</bestand>
          <lieferwoche>36</lieferwoche>
        </artikel>
        <artikel artnr="405023">
          <bestand>ja</bestand>
        </artikel>
        <artikel artnr="405458">
          <bestand>ja</bestand>
        </artikel>
      </bestaende>
      <messages>
      </messages>
    </bestaende>
    Was ich nun aus dieser Datei brauche ist jeweils die Artikelnummer sowie Bestand ja/nein und, falls vorhanden, die Lieferwoche.

    Das Ganze würde ich dann Tabbstopp-getrennt ausgeben:
    artikelnummer | Bestand | Lieferwoche

    Leider habe ich keine Ahnung, wie ich die Daten aus der XML-Datei extrahieren soll. Zu DOM habe ich leider keine Doku gefunden.

    Ich fände es echt toll, wenn Ihr mit einen kleinen Schubs in die richtighe Richtung geben könntet!

    Vielen Dank!
    ...zur Zeit außer Betrieb...

  2. #2
    Guest Strogij hilft, wo's geht Strogij hilft, wo's geht
    Registriert seit
    Aug 2002
    Beiträge
    2.233
    Zitat Zitat von Moritz
    Zu DOM habe ich leider keine Doku gefunden.
    http://www.php.net/manual/de/ref.domxml.php

  3. #3
    TP-Insider HoRnominatoR ist auf einem guten Weg Avatar von HoRnominatoR
    Registriert seit
    Dec 2003
    Ort
    nienburg (raum hannover)
    Beiträge
    971
    ne ganze reihe parser gibts auch noch unter http://php.net/xml_parse in den kommentaren. sehr schlicht, koennen leider nicht mit cdata/tag-gemischen umgehen, aber das brauchst du fuer deine struktur auch nicht.
    in eile kam er,
    in schwarzem gewand,
    aus den tiefen des waldes,
    ein einsamer mann, ein geschoepf der freiheit,
    ein geschoepf ohne furcht,
    doch alle nannten sie ihn nur T O D

  4. #4
    TP-Senior Moritz macht sich hier sehr viel Mühe
    Registriert seit
    Nov 2002
    Beiträge
    289
    Hallo!

    vielen Dank für die Antwort!
    Ich hab mal versucht die Referenz von DOM zu verstehen, leider bin ich jedoch kläglich gescheitert.

    Könntet ihr mir evtl mal einen Anfang zeigen? Wäre echt super!

    Vielen Dank und ein schönes Wochenende!
    ...zur Zeit außer Betrieb...

  5. #5
    TP-Special Mod steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869
    Dazu brauchst Du Dir nur die einzelnen Funktionen anschauen.

    Beginn doch mit domxml_xmltree
    Dort hast Du auch viele Code-Beispiele, die Dir helfen sollten (wichtiger Tipp: in den Kommentaren zu den Befehlen verbergen sich oft die besten Tipps)


    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer


  6. #6
    TP-Senior Moritz macht sich hier sehr viel Mühe
    Registriert seit
    Nov 2002
    Beiträge
    289
    AHHHHH!!! Ich bekomms einfach nicht hin

    Ich hab ihn über domxml_xmltree zwar soweit, dass ich über print_r das XML-File in nen Array gelesen bekomme, aber wie mache ich nun weiter....
    Langsam stellt sich echt die Totalblockade ein - tut mir leid...
    ...zur Zeit außer Betrieb...

  7. #7
    TP-Insider HoRnominatoR ist auf einem guten Weg Avatar von HoRnominatoR
    Registriert seit
    Dec 2003
    Ort
    nienburg (raum hannover)
    Beiträge
    971
    und wo liegt das problem bei den anderen xml-parsern?
    in eile kam er,
    in schwarzem gewand,
    aus den tiefen des waldes,
    ein einsamer mann, ein geschoepf der freiheit,
    ein geschoepf ohne furcht,
    doch alle nannten sie ihn nur T O D

  8. #8
    TP-Senior Moritz macht sich hier sehr viel Mühe
    Registriert seit
    Nov 2002
    Beiträge
    289
    Ich habe in meinem FAll den Parser von "bbellwfu at gmail dot com" auf dieser Seite http://www.php.net/xml_parse genommen.
    Dieser produziert ein Array, dass wie folgt aussieht:
    PHP-Code:
    Array
    (
        [
    0] => Array
            (
                [
    name] => BESTAENDE
                
    [attrs] => Array
                    (
                    )

                [
    children] => Array
                    (
                        [
    0] => Array
                            (
                                [
    name] => BESTAENDE
                                
    [attrs] => Array
                                    (
                                    )

                                [
    children] => Array
                                    (
                                        [
    0] => Array
                                            (
                                                [
    name] => ARTIKEL
                                                
    [attrs] => Array
                                                    (
                                                        [
    ARTNR] => 401017
                                                    
    )

                                                [
    children] => Array
                                                    (
                                                        [
    0] => Array
                                                            (
                                                                [
    name] => BESTAND
                                                                
    [attrs] => Array
                                                                    (
                                                                    )

                                                                [
    tagData] => nein
                                                            
    )

                                                    )

                                            )

                                        [
    1] => Array
                                            (
                                                [
    name] => ARTIKEL
                                                
    [attrs] => Array
                                                    (
                                                        [
    ARTNR] => 401167
                                                    
    )

                                                [
    children] => Array
                                                    (
                                                        [
    0] => Array
                                                            (
                                                                [
    name] => BESTAND
                                                                
    [attrs] => Array
                                                                    (
                                                                    )

                                                                [
    tagData] => nein
                                                            
    )

                                                    )

                                            )

                                        [
    2] => Array
                                            (
                                                [
    name] => ARTIKEL
                                                
    [attrs] => Array
                                                    (
                                                        [
    ARTNR] => 401171
                                                    
    )

                                                [
    children] => Array
                                                    (
                                                        [
    0] => Array
                                                            (
                                                                [
    name] => BESTAND
                                                                
    [attrs] => Array
                                                                    (
                                                                    )

                                                                [
    tagData] => nein
                                                            
    )

                                                    )

                                            )

                                        [
    3] => Array
                                            (
                                                [
    name] => ARTIKEL
                                                
    [attrs] => Array
                                                    (
                                                        [
    ARTNR] => 401748
                                                    
    )

                                                [
    children] => Array
                                                    (
                                                        [
    0] => Array
                                                            (
                                                                [
    name] => BESTAND
                                                                
    [attrs] => Array
                                                                    (
                                                                    )

                                                                [
    tagData] => nein
                                                            
    )

                                                    )

                                            )

                                        [
    4] => Array
                                            (
                                                [
    name] => ARTIKEL
                                                
    [attrs] => Array
                                                    (
                                                        [
    ARTNR] => 401791
                                                    
    )

                                                [
    children] => Array
                                                    (
                                                        [
    0] => Array
                                                            (
                                                                [
    name] => BESTAND
                                                                
    [attrs] => Array
                                                                    (
                                                                    )

                                                                [
    tagData] => nein
                                                            
    )

                                                    )

                                            )

                                        [
    5] => Array
                                            (
                                                [
    name] => ARTIKEL
                                                
    [attrs] => Array
                                                    (
                                                        [
    ARTNR] => 402127
                                                    
    )

                                                [
    children] => Array
                                                    (
                                                        [
    0] => Array
                                                            (
                                                                [
    name] => BESTAND
                                                                
    [attrs] => Array
                                                                    (
                                                                    )

                                                                [
    tagData] => ja
                                                            
    )

                                                    )

                                            )

                                        [
    6] => Array
                                            (
                                                [
    name] => ARTIKEL
                                                
    [attrs] => Array
                                                    (
                                                        [
    ARTNR] => 404398
                                                    
    )

                                                [
    children] => Array
                                                    (
                                                        [
    0] => Array
                                                            (
                                                                [
    name] => BESTAND
                                                                
    [attrs] => Array
                                                                    (
                                                                    )

                                                                [
    tagData] => nein
                                                            
    )

                                                        [
    1] => Array
                                                            (
                                                                [
    name] => LIEFERWOCHE
                                                                
    [attrs] => Array
                                                                    (
                                                                    )

                                                                [
    tagData] => 36
                                                            
    )

                                                    )

                                            )

                                        [
    7] => Array
                                            (
                                                [
    name] => ARTIKEL
                                                
    [attrs] => Array
                                                    (
                                                        [
    ARTNR] => 405023
                                                    
    )

                                                [
    children] => Array
                                                    (
                                                        [
    0] => Array
                                                            (
                                                                [
    name] => BESTAND
                                                                
    [attrs] => Array
                                                                    (
                                                                    )

                                                                [
    tagData] => ja
                                                            
    )

                                                    )

                                            )

                                        [
    8] => Array
                                            (
                                                [
    name] => ARTIKEL
                                                
    [attrs] => Array
                                                    (
                                                        [
    ARTNR] => 405458
                                                    
    )

                                                [
    children] => Array
                                                    (
                                                        [
    0] => Array
                                                            (
                                                                [
    name] => BESTAND
                                                                
    [attrs] => Array
                                                                    (
                                                                    )

                                                                [
    tagData] => ja
                                                            
    )

                                                    )

                                            )

                                    )

                            )

                        [
    1] => Array
                            (
                                [
    name] => MESSAGES
                                
    [attrs] => Array
                                    (
                                    )

                            )

                    )

            )


    Nun weiß ich nicht, wie ich an die Daten komme, die [ARTNR] bzw in BESTAND stehen. Sorry, dass ich mich so dämlich anstelle, aber ich sitze jetzt schon seit einigen Tagen an dem Mist ohne dass sich ein Ergebnis einstellt und bin leicht gefrustet...
    Vielen Dank für Eure grossartige Hilfe!
    ...zur Zeit außer Betrieb...

  9. #9
    TP-Insider HoRnominatoR ist auf einem guten Weg Avatar von HoRnominatoR
    Registriert seit
    Dec 2003
    Ort
    nienburg (raum hannover)
    Beiträge
    971
    zB mit

    PHP-Code:
    $array[0]['children'][0]['children'][0]['attrs']['ARTNR']
    $array[0]['children'][0]['children'][0]['children'][0]['TagData'
    so wie du halt auf jedes andere array auch zugreifst, du musst nur die keys verfolgen.
    in eile kam er,
    in schwarzem gewand,
    aus den tiefen des waldes,
    ein einsamer mann, ein geschoepf der freiheit,
    ein geschoepf ohne furcht,
    doch alle nannten sie ihn nur T O D

  10. #10
    TP-Senior Moritz macht sich hier sehr viel Mühe
    Registriert seit
    Nov 2002
    Beiträge
    289
    Komisch, genau das habe ich vorhin probiert, was aber nicht geklappt hat...

    Naja, werds glich mal testen und berichten - bin gerade noch einer anderen Lösung auf der Spur.

    Vielen Dank aber erst mal soweit.
    ...zur Zeit außer Betrieb...

  11. #11
    TP-Senior Moritz macht sich hier sehr viel Mühe
    Registriert seit
    Nov 2002
    Beiträge
    289
    Hallo nocheinmal!
    also ich bin nun schon etwas weiter.
    Leider macht mir die Ausgabe von Bestand ja/nein bzw der Lieferwoche etwas Probleme.
    Hier mal der Code:
    PHP-Code:
    <?php
    $doc 
    addslashes(domxml_open_file("result.dat"));

    $artikelElements $doc->get_elements_by_tagname('artikel');


    foreach (
    $artikelElements as $artikelElement) {

        
    $artnr $artikelElement->get_attribute('artnr');


        
    $bestandElements $artikelElement->get_elements_by_tagname('bestand');

        if (
    $bestandElements.length 0) {
            
    $bestandElement $bestandElements[0];
            
    $bestand $bestandElement->node_value();
        } else {
            
    $bestand '';
        }


        
    $lieferwocheElements 
                
    $artikelElement->get_elements_by_tagname('lieferwoche');

        if (
    $lieferwocheElements.length 0) {
            
    $lieferwocheElement $lieferwocheElements[0];
            
    $lieferwoche $lieferwocheElement->node_value();
        } else {
            
    $lieferwoche '';
        }


        print(
    $artnr ', ' $bestand ', ' $lieferwoche "\n<br>");

    }

    ?>
    $artnr wird problemlos ausgegeben, aber den Rest unterschlägt das Script. Ich habe mir gedacht, dass irgendwas mit "node_value();" nicht stimmen kann. Hab schon allesmögliche probiert, bekomme es aber nicht hin.
    Seht Ihr noch einen Fehler?
    ...zur Zeit außer Betrieb...

+ Antworten

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

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