Autor |
Nachricht |
WurstOderWas
Threadersteller
Dabei seit: 26.03.2003
Ort: -
Alter: 43
Geschlecht:
|
Verfasst Mo 21.11.2005 12:53
Titel [PHP]Problem bei Parsen vom XML-Daten |
|
|
Hi Leute,
in einer XML-Datei stehen HTML-Elemente. Genauer gesagt ein select-tag mit mehreren und vor allem einer variierenden anzahl an option-tags.
das ganze wird in etwa so geliefert und muss so verarbeitet werden:
Code: | <result ok="true">
<SET>route</SET>
<CID>****</CID>
<todo>showRouteList</todo>
<state>routeInput</state>
<DEVICECHECK>0</DEVICECHECK>
<ALTERNATIVES>50</ALTERNATIVES>
<STYLE>xml</STYLE>
<LANG>DEU</LANG>
<query_result_0 results="6">
<select name="JOINED_0">
<option selected value="0|D|25746|Heide|||||1010772|7199214|">D-25746 Heide </option>
<option value="0|D|25746|Heide|Süderholm||||1017271|7199845|">D-25746 Heide Süderholm </option>
<option value="0|D|25746|Heide|Bennewohld||||1022394|7200770|">D-25746 Heide Bennewohld </option>
<option value="0|D|25746|Heide|Dellweg; Gem Heide||||1006371|7200820|">D-25746 Heide Dellweg; Gem Heide </option>
<option value="0|D|25746|Heide|Duvenheide||||1018330|7197726|">D-25746 Heide Duvenheide </option>
<option value="0|D|25746|Heide|Hochfeld||||1008117|7200153|">D-25746 Heide Hochfeld </option>
</select>
</query_result_0>
</result>
|
Ich möchte nun also gerne das Element query_result_0 auslesen.
Das habe ich erfolglos mit folgendem Script probiert:
Code: |
<?
function elem_start($xml_parser, $name, $attribute) {
if($name == "query_result_0"){
xml_set_character_data_handler($xml_parser, "cdata_ausgeben");
}else{
xml_set_character_data_handler($xml_parser, "cdata_nichtausgeben");
}
}
function elem_ende($xml, $name) {
}
function cdata_ausgeben($xml, $daten){
echo htmlspecialchars($daten);
}
function cdata_nichtausgeben($xml, $daten){
}
$xml_parser = xml_parser_create();
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, false);
xml_set_element_handler($xml_parser, "elem_start", "elem_ende");
$daten = file_get_contents($file);
xml_parse($xml_parser, $daten, true);
xml_parser_free($xml_parser);
?>
|
Wenn ich statt "query_result_0" oben in der if-schleife beispielsweise "todo" eingebe, dann erhalte ich das richtige ergebnis.
Was mache ich falsch. Bin für jeden Tip dankbar.
Danke!
Zuletzt bearbeitet von WurstOderWas am Mo 21.11.2005 14:16, insgesamt 1-mal bearbeitet
|
|
|
|
|
Account gelöscht
Ort: -
Alter: -
|
Verfasst Mo 21.11.2005 14:53
Titel
|
|
|
*grusel*
Zum Problem:
Ich würde für den gezielten Zugriff auf XML-Daten auch eher auf die DOM-Funktionalität von PHP - bevorzugt 5 - zurückgreifen:
http://de3.php.net/manual/de/ref.dom.php
Willst du die SAX-Erweiterung tatsächlich nutzen, würde ich dir empfehlen, entweder mit xml_parse_into_struct() den ganzen Baum in ein Array zu lesen und dieses auseinanderzunehmen, oder alternativ die Elementhandler einmal zu testen, d.h. einfach mal in einem ersten Schritt den ganzen Baum ausgeben lassen, und im Folgenden dann speziell Funktionen für deine Problemlösung zu entwickeln.
Fang quasi klein an und beginne zu Verstehen, was die Erweiterung mit deinen XML-Daten macht, das Prinzip dahinter muss dir einleuchten, bevor du beginnst damit zu arbeiten.
Zuletzt bearbeitet von am Mo 21.11.2005 14:55, insgesamt 1-mal bearbeitet
|
|
|
|
|
Anzeige
|
|
|
kaputt
Dabei seit: 08.05.2003
Ort: -
Alter: -
Geschlecht:
|
Verfasst Mo 21.11.2005 15:19
Titel
|
|
|
XSchinkenX hat geschrieben: |
*grusel* |
|
|
|
|
|
WurstOderWas
Threadersteller
Dabei seit: 26.03.2003
Ort: -
Alter: 43
Geschlecht:
|
Verfasst Mo 21.11.2005 15:34
Titel
|
|
|
XSchinkenX hat geschrieben: |
*grusel*
Zum Problem:
Ich würde für den gezielten Zugriff auf XML-Daten auch eher auf die DOM-Funktionalität von PHP - bevorzugt 5 - zurückgreifen:
http://de3.php.net/manual/de/ref.dom.php
Willst du die SAX-Erweiterung tatsächlich nutzen, würde ich dir empfehlen, entweder mit xml_parse_into_struct() den ganzen Baum in ein Array zu lesen und dieses auseinanderzunehmen, oder alternativ die Elementhandler einmal zu testen, d.h. einfach mal in einem ersten Schritt den ganzen Baum ausgeben lassen, und im Folgenden dann speziell Funktionen für deine Problemlösung zu entwickeln.
Fang quasi klein an und beginne zu Verstehen, was die Erweiterung mit deinen XML-Daten macht, das Prinzip dahinter muss dir einleuchten, bevor du beginnst damit zu arbeiten. |
Also, ich bin nicht auf die SAX-Erweiterung angewiesen. Will nur dieses schnuckelige, kleine Select-Feldchen haben. Wie is mir ziemlich schnuppe. Also... wie komm ich an mein Select-Feld?
|
|
|
|
|
Account gelöscht
Ort: -
Alter: -
|
Verfasst Mo 21.11.2005 19:53
Titel
|
|
|
Mit den DOM-Funktionen
|
|
|
|
|
WurstOderWas
Threadersteller
Dabei seit: 26.03.2003
Ort: -
Alter: 43
Geschlecht:
|
Verfasst Di 22.11.2005 12:19
Titel
|
|
|
XSchinkenX hat geschrieben: | Mit den DOM-Funktionen |
hmm, diese funktionen scheinen nicht verfügbar zu sein (call to undefined function)
noch ne idee?
|
|
|
|
|
dastef
Dabei seit: 03.11.2003
Ort: -
Alter: -
Geschlecht:
|
Verfasst Di 22.11.2005 12:52
Titel
|
|
|
die dom-extension installieren ..
|
|
|
|
|
WurstOderWas
Threadersteller
Dabei seit: 26.03.2003
Ort: -
Alter: 43
Geschlecht:
|
Verfasst Di 22.11.2005 18:26
Titel
|
|
|
so... extension ist installiert.
wie konkret kann ich nun aus dem groooossen schnipsel(oben)
nur diesen teil hier auslesen:
Code: | <query_result_0 results="6">
<select name="JOINED_0">
<option selected value="0|D|25746|Heide|||||1010772|7199214|">D-25746 Heide </option>
<option value="0|D|25746|Heide|Süderholm||||1017271|7199845|">D-25746 Heide Süderholm </option>
<option value="0|D|25746|Heide|Bennewohld||||1022394|7200770|">D-25746 Heide Bennewohld </option>
<option value="0|D|25746|Heide|Dellweg; Gem Heide||||1006371|7200820|">D-25746 Heide Dellweg; Gem Heide </option>
<option value="0|D|25746|Heide|Duvenheide||||1018330|7197726|">D-25746 Heide Duvenheide </option>
<option value="0|D|25746|Heide|Hochfeld||||1008117|7200153|">D-25746 Heide Hochfeld </option>
</select>
</query_result_0> |
Bitte, bitte mal für doofe. Blödes XML
|
|
|
|
|
|
|
|
Ähnliche Themen |
Parsen von datei php
xml laden und parsen in *.as
XML mit Javascript parsen
XML in PHP einlesen (parsen) und Inhalte ausgeben.
PHP -> XML Parsen - Pro Zeile jeweils 3 Ausgaben!
Hilfe beim Parsen einer XML
|
|