PHP & XML Problem

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
lovebearhk
Forum Newbie
Posts: 3
Joined: Mon Jun 09, 2008 1:33 pm

PHP & XML Problem

Post by lovebearhk »

I have a xml file,
I have already finish writing to display all the keywords (one, two,...., ten)
However I dont know how to get the "title" in each group.
Also, I need to display one group randomly and the keywords in the group at each time.
Can anyone help me?? Thanks a lot!!!!

Code: Select all

<?xml version="1.0"?>
<NEW>
    <Group no="1" title ="ABC">
      <keyword no="0" url="http://aaabb.com">one</keyword>
      <keyword no="1" url="http://aaabb.com">two</keyword>
      <keyword no="2" url="http://aaabb.com">three</keyword>
      <keyword no="3" url="http://aaabb.com">four</keyword>
      <keyword no="4" url="http://aaabb.com2">five</keyword>
    </Group>
    <Group no="2" title ="DEF">
      <keyword no="0" url="http://aaabb.com">six</keyword>
      <keyword no="1" url="http://aaabb.com">seven</keyword>
      <keyword no="2" url="http://aaabb.com">eight</keyword>
    </Group>
   <Group no="3" title ="GHI">
      <keyword no="0" url="http://aaabb.com">nine</keyword>
      <keyword no="1" url="http://aaabb.com">ten</keyword>
   </Group>
</NEW>

Code: Select all

<?php
 
if (!($fp=@fopen("./test.xml", "r"))) die ("Couldn't open XML.");
$key_no=0;
$group_no=0;
$userdata=array();
$state='';
 
function start ($parser,$name,$attrib){
global $key_no;
global $userdata;
global $state;
global $group_no;
$state=$name;
}
 
function end ($parser,$name){
global $key_no;
global $userdata;
global $state;
global $group_no;
$state='';
if($name=="GROUP") {$group_no++;}
if($name=="KEYWORD") {$key_no++;}
}
 
function data ($parser, $data) {
global $key_no;
global $userdata;
global $state;
global $group_no;
if ($state=="KEYWORD") { $userdata[$key_no]->keyword = $data;}
 
}
if (!($xml_parser = xml_parser_create())) die("Couldn't create parser.");
xml_set_element_handler( $xml_parser, "start", "end");
xml_set_character_data_handler( $xml_parser, "data");
 
while( $data = fread($fp, 80000)){
if(!xml_parse($xml_parser, $data, feof($fp))) {
break;}}
xml_parser_free($xml_parser);
 
?>
<html>
<head><title>PHP XML parser</title>
</head>
<body>
<?php
for ($i=0;$i<$key_no; $i++)
{
        echo $userdata[$i]->keyword."<br>";
}
 
?>
</table>
</body><html>
anti.veeranna
Forum Newbie
Posts: 4
Joined: Tue Jun 10, 2008 11:14 am
Location: Estonia

Re: PHP & XML Problem

Post by anti.veeranna »

Try this one:

Code: Select all

$groups = array();
$xml = simplexml_load_file('data.xml');
foreach ($xml->Group as $group) {
    $title = (string)$group['title'];
    $groups[$title] = array();
    foreach($group->children() as $keyword) {
        array_push($groups[$title],(string)$keyword);
    }
}
 
$random_group = array_rand($groups);
print "title = $random_group\n";
print "keywords = " . join(",",$groups[$random_group]);
lovebearhk
Forum Newbie
Posts: 3
Joined: Mon Jun 09, 2008 1:33 pm

Re: PHP & XML Problem

Post by lovebearhk »

Thank you!!! It works^^

Also, I want to include the url into each of the keywords.
Can you help me once more?
Thnaks^^
lovebearhk
Forum Newbie
Posts: 3
Joined: Mon Jun 09, 2008 1:33 pm

Re: PHP & XML Problem

Post by lovebearhk »

who can help me please?
so urgent but my programming skill is so weak.....>.<
Post Reply