PHP ʖ²ἯTH º󍋼/A xml_parse_into_struct èʶ $simple = "para note simple note /note /para "; $p = xml_parser_create(); xml_parse_into_struct($p,$simple,$vals,$index); xml_parser_free($p); echo "Index array\n"; print_r($index); echo "\nVals array\n"; print_r($vals); Index array Array ([PARA] = Array ([0] = 0 [1] = 2) [NOTE] = Array ([0] = 1)) Vals array Array ([0] = Array ([tag] = PARA [type] = open [level] = 1) [1] = Array ([tag] = NOTE [type] = complete [level] = 2 [value] = simple note) [2] = Array ([tag] = PARA [type] = close [level] = 1)) =ד 1. moldb.xml - ·֗Ӑŏ¢µĐ¡Ѝʽ¾ݿ⼯B ?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 =ד 2. parsemoldb.php - ½« moldb.xml ½⎶µ½·֗ӣ¨molecular£©¶ԏ󵄊ÿ©–Š ?php class AminoAcid {var $name; // aa name var $symbol; // three letter symbol var $code; // one letter code var $type; // hydrophobic, charged or neutral function AminoAcid ($aa) {foreach ($aa as $k= $v) $this- $k = $aa[$k];}} function readDatabase($filename) {// read the xml database of aminoacids $data = implode("",file($filename)); $parser = xml_parser_create(); xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0); xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1); xml_parse_into_struct($parser,$data,$values,$tags); xml_parser_free($parser); // loop through the structures foreach ($tags as $key= $val) {if ($key == "molecule") {$molranges = $val; // each contiguous pair of array entries are the // lower and upper range for each molecule definition for ($i=0; $i count($molranges); $i+=2) {$offset = $molranges[$i] + 1; $len = $molranges[$i + 1] - $offset; $tdb[] = parseMol(array_slice($values, $offset, $len));}} else {continue;}} return $tdb;} function parseMol($mvalues) {for ($i=0; $i count($mvalues); $i++) $mol[$mvalues[$i]["tag"]] = $mvalues[$i]["value"]; return new AminoAcid($mol);} $db = readDatabase("moldb.xml"); echo "** Database of AminoAcid objects:\n"; print_r($db);? ** Database of AminoAcid objects: Array ([0] = aminoacid Object ([name] = Alanine [symbol] = ala [code] = A [type] = hydrophobic) [1] = aminoacid Object ([name] = Lysine [symbol] = lys [code] = K [type] = charged)) º󍋼/A ưµ㼯A xml_get_error_code ɏһ¼¶ xml_parse