-
Notifications
You must be signed in to change notification settings - Fork 20
/
Copy pathunserializeRDF.php
93 lines (77 loc) · 2.08 KB
/
unserializeRDF.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<?PHP
/**
* This example shows how to create any object
* from an XML document. In this case we get
* some aggregated objects for channel and items
* from an RSS feed.
*
* @author Stephan Schmidt <[email protected]>
*/
error_reporting(E_ALL);
require_once 'XML/Unserializer.php';
/**
* class for the RDF docuemnt
*
*
*/
class rdfDocument
{
var $channel;
var $item;
function getItems($amount)
{
return array_splice($this->item,0,$amount);
}
}
/**
* class that is used for a channel in the RSS file
*
* you could implement whatever you like in this class,
* properties will be set from the XML document
*/
class channel
{
function getTitle()
{
return $this->title;
}
}
/**
* class that is used for an item in the RSS file
*
* you could implement whatever you like in this class,
* properties will be set from the XML document
*/
class item
{
function getTitle()
{
return $this->title;
}
}
$options = array(
XML_UNSERIALIZER_OPTION_COMPLEXTYPE => 'object',
XML_UNSERIALIZER_OPTION_TAG_MAP => array(
'rdf:RDF' => 'rdfDocument', // this is used to specify a classname for the root tag
)
);
// be careful to always use the ampersand in front of the new operator
$unserializer = &new XML_Unserializer($options);
$status = $unserializer->unserialize('http://pear.php.net/feeds/latest.rss',true);
if (PEAR::isError($status)) {
echo 'Error: ' . $status->getMessage();
} else {
$rss = $unserializer->getUnserializedData();
echo 'This has been returned by XML_Unserializer:<br>';
echo '<pre>';
print_r($rss);
echo '</pre>';
echo '<br><br>Root Tagname: '.$unserializer->getRootName().'<br>';
echo 'Title of the channel: '.$rss->channel->getTitle().'<br>';
$items = $rss->getItems(3);
echo '<br>Titles of the last three releases:<br>';
foreach ($items as $item) {
echo 'Title : '.$item->getTitle().'<br>';
}
}
?>