944,139 Members | Top Members by Rank

Ad:
  • PHP Discussion Thread
  • Unsolved
  • Views: 6377
  • PHP RSS
Feb 18th, 2006
0

Need some help with parsing an XML file

Expand Post »
Hello everyone

I am learning how to parse XML files with PHP. And I cant figure out how to do something. Any help is greatly appreciated

Here is a sample XML file that I am trying to parse:
Quote ...
<?xml version="1.0"?>
<emailsList>
<email no="1">
<from>
whatever@yahoo.com
</from>
<to>
yyy@yahoo.com
</to>
<subject>
Just te test
</subject>
<body>
Helloooooo
</body>
</email>
<email no="2">
<from>
whatever@hotmail.com
</from>
<to>
yyy@hotmail.com
</to>
<subject>
Just to test2
</subject>
<body>
Hiiiiiiii
</body>
</email>
</emailsList>
I am trying to parse this file so if no.1 is entered the information from the 1st node is shown. How can I do this? any help is appreciated.
Here is the php code to prase the xml document
Quote ...
<?php

$xml = xml_parser_create();
$obj = new Parser_Object; // a class to assist with parsing

xml_set_object($xml,$obj);
xml_set_element_handler($xml, 'start_element', 'end_element');
xml_set_character_data_handler($xml, 'character_data');
xml_parser_set_option($xml, XML_OPTION_CASE_FOLDING, false);

$fp = fopen('data.xml', 'r') or die("Can't read XML data.");
while ($data = fread($fp, 4096)) {
xml_parse($xml, $data, feof($fp)) or die("Can't parse XML data");
}
fclose($fp);

xml_parser_free($xml);

class pc_RSS_item
{
var $from = '';
var $to = '';
var $subject = '';
var $body='';
function display() {
printf('<p><a href="%s">%s</a><br />%s</p>',
$this->link,htmlspecialchars($this->title),
htmlspecialchars($this->description));
}
}

class pc_RSS_parser
{
var $tag;
var $item;
function start_element($parser, $tag, $attributes)
{
if ('item' == $tag) {
$this->item = new pc_RSS_item;
} elseif (!empty($this->item)) {
$this->tag = $tag;
}
}
function end_element($parser, $tag) {
if ('item' == $tag) {
$this->item->display();
unset($this->item);
}
}
function character_data($parser, $data) {
if (!empty($this->item)) {
if (isset($this->item->{$this->tag})) {
$this->item->{$this->tag} .= trim($data);
}
}
}
}
?>
Similar Threads
Reputation Points: 10
Solved Threads: 0
Newbie Poster
Dactyl is offline Offline
1 posts
since Feb 2006
Feb 24th, 2006
0

Re: Need some help with parsing an XML file

You can try the XML_Serializer if you can use PEAR: http://pear.php.net/package/XML_Serializer

It will let your convert XML 2 Array and Array 2 XML. Great tool.
Reputation Points: 10
Solved Threads: 2
Junior Poster in Training
RamiroS is offline Offline
57 posts
since Mar 2005
Mar 4th, 2006
0

Re: Need some help with parsing an XML file

Check out my class_xml.php. It should make this job easy for you.
http://www.troywolf.com/articles/php/class_xml/

Reputation Points: 36
Solved Threads: 6
Posting Whiz
Troy is offline Offline
354 posts
since Jun 2005

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in PHP Forum Timeline: Dynamic Include
Next Thread in PHP Forum Timeline: Need Advise On Clever Algorithm





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC