[PHP] Dom XML

Dieses Thema im Forum "Webentwicklung" wurde erstellt von onip, 20. November 2007 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 20. November 2007
    Dom XML

    hallo zusammen,

    ich bescheftige mich gerade etwas mit php und XML.
    hab dazu schon etwas gelesen und paar tuts durch,
    aber ich henge an einer sache.
    und zwar würde ich gerne attribute auslesen können.

    XML datei (trainings.xml)
    Code:
    <?xml version="1.0"?>
    <videotrainings>
     <training dauer="10">
     <titel>PHP</titel>
     <trainer>Tobias Hauser</trainer>
     <trainer>Christian Wenz</trainer>
     </training>
     <training dauer="9">
     <titel>Dreamweaver</titel>
     <trainer>Tobias Hauser</trainer>
     <trainer>Christian Wenz</trainer>
     </training>
     <training dauer="8">
     <titel>Flash</titel>
     <trainer>Sascha Wolter</trainer>
     </training>
    </videotrainings>
    
    php
    Code:
    <?php
    $dom = new DOMDocument();
    $dom->preserveWhiteSpace = false;
    $dom->load('trainings.xml');
    
    $trainings = $dom->getElementsByTagName('training');
    foreach ($trainings as $training) {
     echo htmlspecialchars($training->firstChild->firstChild->data) . '<br />';
    }
    ?>
    
    wie kann ich den attribute "dauer" auslesen?
     
  2. 20. November 2007
    AW: Dom XML

    $element->getAttribute();

    http://de.php.net/manual/de/function.dom-domdocument-createattribute.php
     
  3. 20. November 2007
    AW: Dom XML

    Nimm besser SimpleXML. Da ist der Aufwand wesentlich geringer und das sollte im Normallfall eigentlich reichen.
     
  4. 20. November 2007
    AW: Dom XML

    hi,

    den link kannte ich schon, aber hatte dabei immer ne fehlermeldung.
    grund war, dass ich den attribute-namen nicht eingetragen habe.
    aber jetzt funzt es.

    php
    Code:
    <?php
    $dom = new DOMDocument();
    $dom->preserveWhiteSpace = false;
    $dom->load('trainings.xml');
    $trainings = $dom->getElementsByTagName('training');
    foreach ($trainings as $training) {
     echo "<p><strong>".htmlspecialchars($training->firstChild->firstChild->data) . " (".$training->getAttribute("dauer")." Std.)</strong><br />";
     $trainerAr = $training->getElementsByTagName('trainer');
     foreach ($trainerAr as $trainer) {
     echo $trainer->nodeName.": ".$trainer->textContent."<br>";
     }
     echo "</p>";
    }
    ?>
    
    // edit
    XML simple will ich nicht, da ich sowohl lesen als auch schreiben will.
    daher direkt mit DOM.
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.