nochmal xml zu php

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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

    Comment


    • #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

      Comment


      • #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

        Comment


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

          Comment


          • #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

            Comment


            • #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

              Comment

              Working...
              X