turn xml into 2 dimensional array

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • lawrence

    turn xml into 2 dimensional array

    Well, www.php.net seems utterly crashed. Does anyone know how to get
    an XML stream and turn it into a 2 dimensional array?
  • Phil Roberts

    #2
    Re: turn xml into 2 dimensional array

    With total disregard for any kind of safety measures
    lkrubner@geocit ies.com (lawrence) leapt forth and uttered:
    [color=blue]
    > Well, www.php.net seems utterly crashed. Does anyone know how to
    > get an XML stream and turn it into a 2 dimensional array?
    >[/color]

    Here's a function I use to do that:

    function fetch_xml($xml) {

    if(is_file($xml )){
    $xml_data = file_get_conten ts($xml);
    }
    else{
    $xml_data = $xml;
    }
    $parser = xml_parser_crea te();
    @xml_parse_into _struct($parser , $xml_data, $assoc_arr, $idx_arr);
    @xml_parser_set _option($parser , XML_OPTION_CASE _FOLDING, 0);
    @xml_parser_set _option($parser , XML_OPTION_SKIP _WHITE, 1);
    $root_tag = $assoc_arr[0]['tag'];
    $base_tag = strtolower($ass oc_arr[1]['tag']);
    $i = 0;
    foreach($assoc_ arr as $key => $element){
    if($element['tag'] != $root_tag){
    if(!preg_match( '/^\s+$/', $element['value'])){
    $tag = strtolower($ele ment['tag']);
    $items[$i][$tag] = $element['value'];
    if($tag == $base_tag){
    $i++;
    }
    }
    elseif(isset($e lement['attributes'])){
    $items[$i]['id'] = $element['attributes']['ID'];
    }
    }
    }

    return $items;
    }

    --
    There is no signature.....

    Comment

    • lawrence

      #3
      Re: turn xml into 2 dimensional array

      Phil Roberts <philrob@HOLYfl atnetSHIT.net> wrote in message news:<Xns93E857 0789561philrobe rts@216.196.97. 132>...[color=blue]
      > With total disregard for any kind of safety measures
      > lkrubner@geocit ies.com (lawrence) leapt forth and uttered:
      >[color=green]
      > > Well, www.php.net seems utterly crashed. Does anyone know how to
      > > get an XML stream and turn it into a 2 dimensional array?
      > >[/color]
      >
      > Here's a function I use to do that:
      >
      > function fetch_xml($xml) {
      >
      > if(is_file($xml )){
      > $xml_data = file_get_conten ts($xml);
      > }
      > else{
      > $xml_data = $xml;
      > }
      > $parser = xml_parser_crea te();
      > @xml_parse_into _struct($parser , $xml_data, $assoc_arr, $idx_arr);
      > @xml_parser_set _option($parser , XML_OPTION_CASE _FOLDING, 0);
      > @xml_parser_set _option($parser , XML_OPTION_SKIP _WHITE, 1);
      > $root_tag = $assoc_arr[0]['tag'];
      > $base_tag = strtolower($ass oc_arr[1]['tag']);
      > $i = 0;
      > foreach($assoc_ arr as $key => $element){
      > if($element['tag'] != $root_tag){
      > if(!preg_match( '/^\s+$/', $element['value'])){
      > $tag = strtolower($ele ment['tag']);
      > $items[$i][$tag] = $element['value'];
      > if($tag == $base_tag){
      > $i++;
      > }
      > }
      > elseif(isset($e lement['attributes'])){
      > $items[$i]['id'] = $element['attributes']['ID'];
      > }
      > }
      > }
      >
      > return $items;
      > }[/color]

      Perfect. Thanks.

      Comment

      Working...