+XML: wie komme ich an den Inhalt des Elements?
MudGuard
- php
0 MudGuard
Hi,
cu,
Ich probier mich gerade an XML unter PHP.
Es ist mir auch schon gelungen, auf das start-tag eines Elements zu reagieren (durch experimentieren mit dem Beispiel-Script aus der Doku), aber leider weiß ich jetzt nicht weiter.
An die Attribute des Elements käm ich ja auch noch, aber ich brauch den Inhalt des Elements (reiner Text, keine weiteren Elemente)
"Mein" bisheriges Script:
$file = "D:\Mein.xml";
function startElement($parser, $name, $attrs)
{
if ($name == "name")
{
print "gefunden, Inhalt = "; //hier würd ich gern den Inhalt des Elements haben.
}
}
function endElement($parser, $name)
{
}
$xml_parser = xml_parser_create();
xml_parser_set_option($xml_parser,XML_OPTION_CASE_FOLDING,false);
xml_set_element_handler($xml_parser, "startElement", "endElement");
if (!($fp = fopen($file, "r")))
{
die("could not open XML input $file");
}
while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp)))
{
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser))
);
}
}
xml_parser_free($xml_parser);
Oder kann ich den Inhalt erst im End-Tag-Handler bekommen?
Wenn ja, wie?
ach ja, die XML-Datei sieht so aus:
<?xml version = "1.0" encoding = "iso-8859-1"?>
<data>
<name>blabla</name>
<wert>blubb</wert>
</data>
TIA
Andreas
Hi,
habs gefunden:
xml_set_character_data_handler ist die Stelle, an der ich ansetzen muß.
Im start-tag handler ein flag setzen,
im character-data-handler die Daten auswerten, falls das flag gesetzt ist,
im end-tag handler das flag löschen
cu,
Andreas