XML Datei auslesen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • XML Datei auslesen

    Hallo.

    Ich versuche gerade eine XML-Datei auszulesen.

    Code:
    <dict>
    	<key>Major Version</key><integer>1</integer>
    	<key>Minor Version</key><integer>1</integer>
    	<key>Application Version</key><string>7.6.2</string>
    	<key>Features</key><integer>5</integer>
    	<key>Show Content Ratings</key><true/>
    	<key>Music Folder</key><string>file://localhost/F:/BACKUP/MUSIC/</string>
    	<key>Library Persistent ID</key><string>D632A03717574975</string>
    	<key>Tracks</key>
    	<dict>
    		<key>1794</key>
    		<dict>
    			<key>Track ID</key><integer>1794</integer>
    			<key>Name</key><string>Super Trouper</string>
    			<key>Artist</key><string>ABBA</string>
    			<key>Album Artist</key><string>ABBA</string>
    			<key>Album</key><string>18 Hits</string>
    			<key>Genre</key><string>World</string>
    Hierzu habe ich es mit simplexml versucht.
    PHP-Code:
    $xml simplexml_load_file("Musik.xml");
     echo 
    count($xml);
             foreach(
    $xml->dict->dict->dict as $dict) { 
    über $dict->key[0] usw kann ich die verschiedenen keys ansprechen.
    Das Problem ist aber, dass es nicht immer gleichviele Keys gibt. Wie kann ich nun genau den Key-Album ansprechen und das was dahinter steht (string oder integer) damit "verknüpfen".

    Spreche ich den key über key[4] an und ich habe bei einer anderen Datei ken Album Artist angegeben, so ist key[4] dort Genre.

    Hoffe ich konnte das Problem einigermaßen erklären.

    Grüße
    Wenn die Sonne der Kultur niedrig steht, werfen selbst Zwerge einen Schatten. (Karl Kraus)

  • #2
    Hallo...

    du solltest erstmal valides XML produzieren, dann wird das alles schon einfacher....

    XML-Einträge gehören nicht zusammen, nur weil sie wie bei dir "in einer Zeile" stehen....

    z.B. machst du kein

    <key>Music Folder</key><string>file://localhost/F:/BACKUP/MUSIC/</string>


    sondern ein

    <folder>file://localhost/F:/BACKUP/MUSIC/</folder>

    dann hast du verschiedene Keys und kannst sie über die korrekten Keys ansprechen...
    signed oder unsigned... das ist hier die Frage

    Kommentar


    • #3
      leider kann ich die XML nicht ändern, da sie von itunes so ausgegeben wird.
      Das heißt ich muss es irgendwie schaffen, dass das was nach dem key steht zu dem key gehört.
      Wenn die Sonne der Kultur niedrig steht, werfen selbst Zwerge einen Schatten. (Karl Kraus)

      Kommentar


      • #4
        Was für ein dämliches Format die da gewählt haben, echt unglaublich!
        Mit SimpleXmlElement::children() und einer Schleife solltest du per Hand ans Ziel kommen. Am besten baust du dir ein assoziatives Array auf, dann kannst du direkt per $arr['Genre'] drauf zugreifen!

        Kommentar


        • #5
          Ich würde es mit einer Xpath-Query machen

          descendant::key[. = 'Album']/following-sibling::string

          falls du auf fixe Elemente/Werte zugreifen willst - musst halt wissen ob der Nachfahrte string oder integer heißt

          OffTopic:
          Das Format ist ja echt mal Hardcore
          Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
          Schön - etwas Geschichte kann ja nicht schaden.
          Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

          Kommentar

          Lädt...
          X