Jump to content

XML parsing help


jimbob26

Recommended Posts

Hello, I currently have this XML file for images:
[code]
<?xml version="1.0"?>
<images>
    <image src="a.png">
        <name>a</name>
        <description>Jim a</description>
    </image>
    <image src="b.png">
        <name>b</name>
        <description>Jim b</description>
    </image>
</images>
[/code]

And also have this php file:

[code]
<?php
$open_stack = array();
$parser = xml_parser_create();
xml_set_element_handler($parser,"start_handler","end_handler");
xml_set_character_data_handler($parser,"character_handler");
xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
xml_parse($parser,implode("",file("images.xml"))) or die(format_error($parser));
xml_parser_free($parser);
function start_handler($p,$name,$atts) {
    global $open_stack;
    $open_stack[] = array($name,"");
}
function character_handler($p,$txt) {
    global $open_stack;
    $cur_index = count($open_stack)-1;
    $open_stack[$cur_index][1] .= $txt;
}
function end_handler($p,$name) {
    global $open_stack;
    $el = array_pop($open_stack);
    if($name=="name") {
        print "<b>$el[1]</b>";
    }
    if($name=="description") {
        print "<i>$el[1]</i><br>";
    }
}
function format_error($p) {
    $code = xml_error_code($p);
    $str = xml_error_string($code);
    $line = xml_get_current_line_number($p);
    return "XML ERROR ($code): $str at line $line";
}
?>
[/code]

This works fine but im not sure how to extract the src attribute from the image tag (<image src="a.png">). Everything else is working fine, both the name and description of the file is being outputted correctly.

Any help is greatly appreciated.
Thanks in advance, jim
Link to comment
https://forums.phpfreaks.com/topic/7859-xml-parsing-help/
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.