Hallo,
ich steh glaub ich auf dem Schlauch.
Ich will die attribs mit in das $feed kriegen und krieg es nicht hin...
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
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."\"-----> 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
Kommentar