mithu_sree Posted January 9, 2007 Share Posted January 9, 2007 <?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>";?> This code is from http://www.php.net/manual/en/function.xml-...into-struct.phplet 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 Share on other sites More sharing options...
boen_robot Posted January 10, 2007 Share Posted January 10, 2007 WOW. Unless you're using PHP4, I suggest you try out the DOM Functions. They are much easier to set up and debug. Besides, what do you mean by "parse"? With the DOM functions, "parse" would mean "select" but then you'd do something .TIP: Begin with the evaluate() function and after you feel comfortable using XPath, go to query(). Then use item() alongside the rest of the functions to do something with the selected item() from the query() results. Link to comment Share on other sites More sharing options...
mithu_sree Posted January 10, 2007 Author Share Posted January 10, 2007 oh that new DOM functions are interesting. I will be trying with these. Link to comment Share on other sites More sharing options...
mithu_sree Posted January 11, 2007 Author Share Posted January 11, 2007 I'm trying to parse RSS files. I just want to know is there a function like javascript innerHTML() in PHP$titles = $dom->getElementsByTagName('title');foreach ($titles as $title) { echo $param->.......'<br>'; // I want to get the contents inside <title> tags} Link to comment Share on other sites More sharing options...
boen_robot Posted January 11, 2007 Share Posted January 11, 2007 DOM results are not saved as arrays. They are saved as DOM objects you then refer to with item(). Values of properties (in the example below, that's "length") are an exclusion to this rule. They are most often strings instead.Try something like $titles = $dom->getElementsByTagName('title');for ($i=0; $i<=$titles->length; $i++){echo $titles->item($i) . '<br>';} Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now