Index  |  Quick Docs  |  Usage Examples

phpdomxml-0.9.0 Usage Examples (and test-case)

This set of usage examples shows live output of the presented code snippets. And besides being a useful example base, it also serves as a unit test system for the functionality of phpdomxml. Please pick a test batch to run from the list below.

1. Creating a DOM from file and by using methods (3 tests)
2. Dynamic DOM creation with XML_Node's insertBefore method (3 tests)
3. CharacterData interface tests (6 tests)
4. XML_Node's removeChild method test (3 tests)
5. Read and show Slashdot's RDF-feed (1 test)


Running batch: Read and show Slashdot's RDF-feed

Example #1

Comment:

This code reads the Resource Description Framework (RDF) of Slashdot and presents it in the browser, using a small piece of javascript. A list of all items in the RDF is retreived using the getElementdBytagName method. In a loop, all items are traversed and the properties of each item are put in an associative array for easier access.

Code:

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
<script type="text/javascript">
    function dspSwitch(id) {
        var d = document.getElementById(id).style;
        d.display = (d.display == 'block')?'none':'block';
    }
</script>
<?php
    
// include xml lib
    
include_once('../lib.xml.inc.php');

    
// convert an rdf item to an associative array
    
function asArray($item) {
        
$a = array();
        while (
$item) {
            
$a[$item->nodeName] = $item->firstChild->nodeValue;
            
$item $item->nextSibling;
        }
        return 
$a;
    }

    
// get the feed
    
$rdf = new XML('http://slashdot.org/index.rss');

    
// get article items
    
$items $rdf->getElementsByTagName('item');

    
// loop and gather info
    
$out '';
    foreach (
$items as $k => $item) {
        
$a asArray($item->firstChild);
        
$out .= '<a href="javascript:;" '.
            
'onclick="dspSwitch(\'item'.$k.'\')">'.
            
$a['title'].'</a> ('.$a['dc:date'].')<br />'.
            
'<div id="item'.$k.'" style="display:none">'.
            
$a['description'].
            
'&nbsp;[<a href="'.$a['link'].'">more</a>]'.
            
'<br /><br /></div>';
    }

    
// display info
    
echo $out;

?>

Output:

China's Helicopter Prototype Looks Like a UFO (2019-10-17T10:00:00+00:00)
Paris Zoo Unveils the 'Blob,' An Organism With No Brain But 720 Sexes (2019-10-17T07:00:00+00:00)
Magic Mushrooms Can Help Smokers Kick the Habit (2019-10-17T03:30:00+00:00)
SpaceX Says 12,000 Satellites Isn't Enough, So It Might Launch Another 30,000 (2019-10-17T02:10:00+00:00)
GitLab Won't Exclude Customers On Moral Grounds, Says That Employees Should Not Discuss Politics At Work (2019-10-17T01:30:00+00:00)
Google Ejects Open-Source WireGuard From Play Store Over Donation Links (2019-10-17T00:50:00+00:00)
For Now Women, Not Democracy, Are the Main Victims of Deepfakes (2019-10-17T00:10:00+00:00)
The Creators Of Pokemon Go Mapped The World. Now They're Mapping You (2019-10-16T23:30:00+00:00)
Volvo To Roll Out a New Electric Vehicle Every Year Through 2025 (2019-10-16T22:50:00+00:00)
Huge Child Porn Ring Busted As Authorities Cite Ability To Crack Bitcoin Privacy (2019-10-16T22:10:00+00:00)
Microsoft Launches Two New Open Source Projects for Developers -- OAM and Dapr (2019-10-16T21:30:00+00:00)
FCC Votes To Approve T-Mobile-Sprint Merger (2019-10-16T20:50:00+00:00)
Analogue Announces Game Boy Clone Dubbed 'Analogue Pocket' (2019-10-16T20:10:00+00:00)
Yahoo Groups Is Winding Down and All Content Will Be Permanently Removed (2019-10-16T19:30:00+00:00)
Hacking 20 High-Profile Dev Accounts Could Compromise Half of the NPM Ecosystem (2019-10-16T18:59:00+00:00)