Nochmal XML-Parser - Variable füllen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Nochmal XML-Parser - Variable füllen

    Hallo,

    ich steh glaub ich auf dem Schlauch.
    Ich will die attribs mit in das $feed kriegen und krieg es nicht hin...

    PHP-Code:
    <?

    global $x;
    $x=1;

    $file = "20071025114019.xml";
    $feed = array();
    $key = "";
    $info = "";


    function start_element_handler ( $parser, $name, $attribs )
        {
    //    print_r ($attribs);echo"<br>";
              global $feed;
              global $attribs;
        if (count($attribs)) {
            foreach ($attribs as $k => $v) {
        //       echo "<b>$z Namek: $k attribut: $v </b><br>"; // wenn ich es hier auslese, funktioniert es, 
    //aber wie kriege ich die attribs in $feed rein und auch noch an der richtigen Stelle?
    // Es soll ja erst ganz unten in der foreach-Schleife ausgegeben werden!
            }
        }
           }

    function end_element_handler ( $parser, $name )
        {
            global $y;
            $z = $y++;
              global $feed, $info;
               $key = $name.$z;
    //       print_r ($attribs);echo"-<br>";
              $feed[$key] = $info;
              $info = "";
          }

    function charData($parser, $data )
        {
              global $info;
              $info .= $data;
           }

    $parser = xml_parser_create();
    xml_parser_set_option( $parser, XML_OPTION_SKIP_WHITE, 1 );
    xml_set_element_handler($parser, "start_element_handler", "end_element_handler");
    xml_set_character_data_handler($parser, "charData" );
    $fp = fopen($file, "r");

    while ($data = fread($fp, 4096))
    !xml_parse($parser, $data, feof($fp));
    xml_parser_free($parser);

    $arrayzaehler=1;

    $x=0;
    $datensaetze=0;

        foreach($feed as $key => $wert)
        {

    if($x > 3) // erste 4 Einträge ignorieren
    {

    //print_r ($attribs);echo"<br>";

    //   echo "Das Element \"".$key."\" hat den Wert \"".$wert."\"-----&gt; und das Attribut".$???????."<br>"; // Das Attribut kann auch 
    //ruhig an der Stelle im array stehen,
    // wo $wert steht, muß aber nicht

    $x++;
    $arrayzaehler++;
    }
    }

    Im XLS steht es ungefähr so:

    <iw:nutzungsart WOHNEN="true"/>
    <iw:vermarktungsart KAUF="true"/>
    <iwbjektart>
    <iw:wohnung wohnungtyp="DACHGESCHOSS"/></iwbjektart>
    <iw:strasse>Villmatstr.</iw:strasse>
    <iw:hausnummer>33</iw:hausnummer>
    <iwlz>74076</iwlz>

    (ist natürlich stark gekürzt)

    Am Ende will ich eben den Kram in eine Datenbank schreiben.
    Mit den anderen Daten geht es auch, also z.B. bei "Hausnummer" wird "33" in die DB geschrieben.

    Jetzt will ich, daß bei "wohnen" eben "1" oder "true" in die DB geschrieben wird. Soweit ich gesehen habe, gibt es "wohnen=false" nicht, sondern es steh in anderen Fällen etwas anderes drin, z.B. statt

    <iw:nutzungsart WOHNEN="true"/>

    eben

    <iw:nutzungsart MIETEN="true"/>

    Mir würde also das Wort "wohnen" oder "mieten" reichen, da das, was da steht immer true ist.

    Das aber nur als Zusatzinfo.

    Danke und Grüße,
    Coni
    Gruß, Coni
    ~~ codito ergo sum - ich code, also bin ich! ~~

  • #2
    PHP-Code:
    <?php
    global $x;
    überflüssig, weil $x im globalen Namensraum definiert wird. Btw kennst du
    PHP-Code:
    $GLOBALS['NameDerVar']; 
    erspart das ewige Globalisieren innerhalb der Funktionen. Ermöglicht den direkten Zugriff aus Funktionen in den globalen Namensraum
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Öhm, okay, danke für den Hinweis... jetzt hab ich aber noch immer das Problem, die Attribute in die die Foreach-Schleife zu bekommen, bzw. in $feed
      Gruß, Coni
      ~~ codito ergo sum - ich code, also bin ich! ~~

      Kommentar

      Lädt...
      X