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
$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);
}
}
}
}
?>
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.