Jump to content

XML Parser


mithu_sree

Recommended Posts

[code]
<?php
$file="http://www.URL.com/file.XML";

$xml_parser = xml_parser_create();

$handle = fopen($file, "rb");
$contents = '';
while (!feof($handle)) {
  $data .= fread($handle, 8192);
}
fclose($handle);

xml_parse_into_struct($xml_parser, $data, $vals, $index);
xml_parser_free($xml_parser);

$params = array();
$level = array();
foreach ($vals as $xml_elem) {
  if ($xml_elem['type'] == 'open') {
  if (array_key_exists('attributes',$xml_elem)) {
    list($level[$xml_elem['level']],$extra) = array_values($xml_elem['attributes']);
  } else {
    $level[$xml_elem['level']] = $xml_elem['tag'];
  }
  }
  if ($xml_elem['type'] == 'complete') {
  $start_level = 1;
  $php_stmt = '$params';
  while($start_level < $xml_elem['level']) {
    $php_stmt .= '[$level['.$start_level.']]';
    $start_level++;
  }
  $php_stmt .= '[$xml_elem[\'tag\']] = $xml_elem[\'value\'];';
  eval($php_stmt);
  }
}

echo "<pre>";
print_r ($params);
echo "</pre>";
?>
[/code]

This code is from http://www.php.net/manual/en/function.xml-parse-into-struct.php
let this one be the input
<?xml version="1.0"?>
<moldb>

    <molecule>
        <name>Alanine</name>
        <symbol>ala</symbol>
        <code>A</code>
        <type>hydrophobic</type>
    </molecule>

    <molecule>
        <name>Lysine</name>
        <symbol>lys</symbol>
        <code>K</code>
        <type>charged</type>
    </molecule>

</moldb>

The parser not parsing the second <molecule> tag.
What should I do to work the code correctly?
Link to comment
https://forums.phpfreaks.com/topic/33425-xml-parser/
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.