PHP en XML

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jelle -

Jelle -

03/12/2006 17:19:00
Quote Anchor link
Hallo,

IK heb een fotoalbum die de mappen uitleest geschreven, maar als ik daar nu comment wil bij plaatsen moet ik naar een database gaan schrijven of iets dergelijks, om dat allemaal bij te houden. Nu ik al redelijk wat heb gelezen over xml dan is het net de bedoeling om niet beveiligde gegevens in xml files op te slaan ipv een database en comment bij foto's is echt niet belangrijk, dus denk ik dat een xml file tochwel de beste oplossing is.

Nu zit ik met het probleem dat ik niet weet welke klassen er in php bestaan om xml files uit te lezen en misschien kunnen jullie me helpen. Ik werk met een php 5.0 server

Wat zijn de beste oplossingen om data uit en in xml files te steken en welk idee zit erachter?

Alvast bedankt!

Jelle
 
PHP hulp

PHP hulp

26/04/2024 10:04:09
 

03/12/2006 17:25:00
Quote Anchor link
Lekker DOM doen
of SimpleXML
 
Jelle -

Jelle -

03/12/2006 17:54:00
Quote Anchor link
Is dom geen client side? of staat deze DOM voor iets anders?
welkeen is makkelijkst in gebruik en makkelijkst over te dragen naar bv java of vb.net omdat ik volop bezig ben met deze talen in school
Gewijzigd op 01/01/1970 01:00:00 door Jelle -
 

03/12/2006 18:01:00
Quote Anchor link
DOM staat voor Document Object Model. Het zijn richtlijnen voor een systematisch web (opbouw van een document.....).

Het heeft functies als getObjectById, .... en is er idd. ook voor JavaScript maar ook voor PHP.

Hier een voorbeeldje van een systeem waarmee ik bezig ben. Het kleed HTML bestanden uit.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php

    # ---------------------------------------------------------------------------------
    # |  DTC - Document & Template Class                                              |
    # ---------------------------------------------------------------------------------
    # |  Webmakerij                                                                   |
    # |  versie 1.0.0 - november 2006                                                 |
    # |  Licentie: GNU/GPL, http://www.gnu.org/licenses/gpl.html                      |
    # ---------------------------------------------------------------------------------
    # |  Ontwikkeld voor:    PHP 5                                                    |
    # |  Getest op:          PHP 5.1.4                                                |
    # |  Ontwikkeld met:     SciTE 1.70                                               |
    # ---------------------------------------------------------------------------------

    
    class classDTC
    {
        # DOM variabelen
        var $dom;
        
        # Contructor, geef het te openen bestand op, eventueel een contenttype
        # -----------------------------------------------------------------------------

        function __construct($bronbestand, $contenttype = 'iso-8859-1')
        {

            $this->dom = new DOMDocument('1.0', $contenttype);
            $this->dom->loadHTMLFile($bronbestand);
            return true;
        }

        
        # Haal document titel op
        # -----------------------------------------------------------------------------

        function getTitel()
        {

            $titeltag = $this->dom->getElementsByTagName('title');
            if ($titeltag->length != 0)
            {

                return $titeltag->item(0)->nodeValue;
            }

            else
            {
                return false;
            }
        }

        
        # Haal meta data op
        # -----------------------------------------------------------------------------

        function getMetaData($httpequiv = true)
        {

            $metatags = $this->dom->getElementsByTagName('meta');
            for ($i = 0; $i <= ($metatags->length -1); $i++)
            {

                if ($metatags->item($i)->getAttribute('name'))
                {

                    $meta[$metatags->item($i)->getAttribute('name')] = $metatags->item($i)->getAttribute('content');
                }

                elseif ($metatags->item($i)->getAttribute('http-equiv') AND $httpequiv == true)
                {

                    $meta[$metatags->item($i)->getAttribute('http-equiv')] = $metatags->item($i)->getAttribute('content');
                }
            }

            return $meta;
        }

        
        # Haal alles uit de body op
        # -----------------------------------------------------------------------------

        function getbody()
        {

            $body = $this->dom->getElementsByTagName('body');
            $bodycontent = $body->item(0)->getElementsByTagName('*');
            $output = "";
            for ($i = 0; $i <= ($bodycontent->length -1); $i++)
            {

                if ($bodycontent->item($i)->hasAttributes() == false)
                {

                    $output .= '<' . $bodycontent->item($i)->tagName . '>';
                }

                else
                {
                    $attributen = $bodycontent->item($i)->getAttribute('*');
                    $output .= '<' . $bodycontent->item($i)->tagName . ' ' . $attributen . '>';
                }

                $output .=  $bodycontent->item($i)->nodeValue;
                $output .= '</' . $bodycontent->item($i)->tagName . ">\r\n";
            }

            return $output;
        }
    }


?>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<pre><?php
    include "parser.php";
    $voorbeeld = new classDTC('voorbeeld.html');
    
    echo "\r\n\r\nDe titel is:\r\n";
    echo $voorbeeld->getTitel();

    echo "\r\n\r\nDe meta tag(s) is/zijn:\r\n";
    print_r($voorbeeld->getMetaData());
    
    echo "\r\n\r\nDe inhoud van het document is:\r\n";
    print htmlentities($voorbeeld->getbody(true));
?>
</pre>




Volgens mij biedt VB ook ondersteuning voor DOM via XMLHTTP
Gewijzigd op 01/01/1970 01:00:00 door
 
Bo az

Bo az

03/12/2006 18:18:00
Quote Anchor link
[offtoppic]
@Webmakerij: als ik zo even snel naar je classDTC kijk, is het eigelijk een uitbreiding op DOMDocument en zou het je werk besparen als je
class classDTC extends DOMDocument gebruikt. Zo heb ik een clsRSS die ik extend op DOMDocument.
[/offtoppic]
 

03/12/2006 18:41:00
Quote Anchor link
Offtopic:

@Boaz
Dit is zomaar nog een beginetje, maar er zullen inderdaad veel dingen van DOMDocument in terugkomen - alhoewel je het misschien meer moet zien als een interface op DOMDocument.





vb - dom
 
Jelle -

Jelle -

03/12/2006 20:29:00
Quote Anchor link
bedankt om dit allemaal wat duidelijk te maken.
Nu weet ik ook dat DOM niet enkel javascript is
 
Jelle -

Jelle -

03/12/2006 21:17:00
Quote Anchor link
Ik heb de klasse wat bekeken en beetje beginnen overlopen en ik ben simpel begonnen maar de functies werken niet (ook dreamweaver herkent ze niet)

hier heb je mijn test bestand
http://test.styledideas.be/

hier mijn code
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
        $xml
        = domxml_open_file("text.xml");
        echo $xml->first_child();
?>

en hier mijn phpinfo()
http://test.styledideas.be/phpinfo.php

als iemand me hiermee kan helpen is hij/zij zeker welkom :)
 
Bo az

Bo az

03/12/2006 22:38:00
Quote Anchor link
DOM is een Object, je krijgt dus iets als:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

$objDOM
= new DOMDocument();
$objDOM->load('text.xml');
//etc...

?>


php.net/DOM
 
Jelle -

Jelle -

03/12/2006 22:40:00
Quote Anchor link
nja, heb ik dat dan zo mis op? maar retourneerd domxml_open_file geen dom document?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.