problem mit simplexml, namespaces und attributen



  • hallo zusammen!

    ich bin gerade dabei eine Implementierung des APS-Standards umzusetzen (http://apsstandard.com) Soweit so gut habe ich bisher auch schon viel hin bekommen, aber nun bin ich an einem Punkt wo ich einfach auf dem Schlauch stehe. Ich habe folgende (gekürzte) XML Datei:

    <application xmlns="http://apstandard.com/ns/1">
    
      <requirements xmlns:php="http://apstandard.com/ns/1/php" xmlns:db="http://apstandard.com/ns/1/db">
        <php:version min="4.2.0"/>
        <php:extension>mysql</php:extension>
    
        <db:db>
          <db:id>main</db:id>
          <db:default-name>wordpress</db:default-name>
          <db:can-use-tables-prefix>true</db:can-use-tables-prefix>
          <db:server-type>mysql</db:server-type>
          <db:server-min-version>4.0.0</db:server-min-version>
        </db:db>
      </requirements>
    </application>
    

    Nun muss ich den wert min="4.2.0" auslesen können. Allerdings klappt das einfach nicht. Zum Parsen verwende ich bisher folgenden Code:

    $Xml = new SimpleXMLElement($XmlFile);
    
    $XmlPhp = $Xml->requirements->attributes('http://apstandard.com/ns/1/php');
    
    print_r($XmlPhp);
    

    Dummerweise erhalte ich dabei keine Ausgabe, habe bereits auch schon zig andere Versionen probiert, aber keine davon hat funktioniert. Das auslesen von Child-Elementen hingegen funktioniert wunderbar.

    Ich hoffe einer von euch kann mir dabei helfen dass ich nicht mehr auf dem Schlauch stehe. Wäre schon wichtig für das Projekt, da ich sonst nicht prüfen kann ob das Paket Versionskompatibel ist oder nicht.

    Vielen Dank vorab!

    Gruß
    Radi
    🙂



  • Übringens hier die Lösung:

    $Xml->registerXPathNamespace('c', 'http://apstandard.com/ns/1/php');
    $Result = $Xml->xpath('//c:version');
    
    echo($Result[0]['min']);
    

    Gruß
    Radi


Anmelden zum Antworten