nochmal xml zu php

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

  • nochmal xml zu php

    Hallo zusammen!

    Ich komm leider nicht weiter beim inporiteren von xml-Daten in php. Ich hab folgende XMK-Datei:
    Code:
    <process>
     <b>
      <user>user1</user> 
      <prio>3</prio> 
      <start>26.08.2004/09:37:00</start> 
      <TTL>1</TTL> 
      <interval>0 Tag(e)</interval> 
      <status>queue_job</status> 
      <key>b</key> 
      </b>
    <a>
      <user>User2</user> 
      <prio>3</prio> 
      <start>26.08.2004/13:22:00</start> 
      <TTL>1</TTL> 
      <interval>0 Tag(e)</interval> 
      <status>wait</status> 
      <key>a</key> 
      </a>
      </process>
    diese daten will ich jetzt in Variablen ein lesen und in eine Tabelle schreiben. Ich habs schon mit xpath versucht, aber da die Tagnamen <a> bzw. <b> immer verschieden sind komme ich da nicht weiter. Vielleicht kann mir da ja jemand weiterhelfen...

    Schonmal Danke

    Sam

  • #2
    Folgender XPath-Ausdruck könnte dir helfen:
    Code:
    process/*[name() = 'a' or name() = 'b']
    Dieser liefert die direkten Kinder von process zurück, deren tagname entweder a oder b ist.
    "Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

    Kommentar


    • #3
      Oh, ich glaube ich muss meine frage noch ei bischen spezifizieren:

      die Tagnamen auf zweiter Ebene (hier <a> bzw. <b>) weiß ich über haupt nicht. Kann man da irgendetwas mit der foreach-Funktion machen??

      Trotzdem schonmal danke & greetz

      Sam

      Kommentar


      • #4
        Dann machst du's einfach so:
        Code:
        process/*
        Das ist aber mit vorsicht zu geniessen, da es dir *jedes* direkte Kind von process zurückgibt.

        Folgendes würde auch funktionieren: (setzt vorraus das process das Document-Element ist)
        PHP-Code:
        //hier DOM-Dok laden

        for($i 0$child $DOMDoc->documentElement->childNodes$child != false)
        {
          
        //verarbeitung hier
          //mit child->tagName, kann man hier beispielweise den Tagname (wer hätt's gedacht ;)) erhalten

        "Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

        Kommentar


        • #5
          wie würde denn der load befehl aussehn??

          Kommentar


          • #6
            PHP-Code:
            $DOM = new DOMDocument();
            $DOM->load("deinedatei.xml");
            //alternativ kann man auch $DOM->loadXML verwenden, dem man einfach einen string übergibt 
            So ungefähr.
            "Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

            Kommentar


            • #7
              Hallo,

              ich denke du solltest die XML Datei ändern:
              PHP-Code:
              <userlist>
                    <
              user>
                          <
              username>kressevadder</username>
                          <
              userpass>hhfu56345j54</userpass>
                    </
              user>
                     <
              user>
                          <
              username>mami</username>
                          <
              userpass>aretru56345j54</userpass>
                    </
              user>
              </
              userlist
              jetzt kannst du alle user durchlaufen und es ist irgendwie logischer. Wenn du dem user tag noch das Attribut username anhängst kannst du sogar mit XPath direkt auf nen User zugreifen:

              PHP-Code:
              <userlist>
                    <
              user username="kressevadder">
                          <
              username>kressevadder</username>
                          <
              userpass>hhfu56345j54</userpass>
                    </
              user>
                     <
              user username="mami">
                          <
              username>mami</username>
                          <
              userpass>aretru56345j54</userpass>
                    </
              user>
              </
              userlist
              select="userlist/user[@username='kressevadder']"

              zeigt nun direkt auf user kressevadder (falls vorhanden) und

              select="./userpass" auf das zugehörige Passwort.


              Gruß Manfred
              Cocoa Entwicklertraining - Alles für die Apfelzucht

              Kommentar

              Lädt...
              X