XML - Zugriff auf Element

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

  • XML - Zugriff auf Element

    Hallo zusammen, ich brauche eure fachmännische Hilfe in Zusammenhang mit XML. Folgendes XML Schema habe ich.


    PHP-Code:
    ["mitarbeiter"]=>
      
    object(SimpleXMLElement)#18 (1) {
        
    ["item"]=>
        array(
    2) {
          [
    0]=>
          
    object(SimpleXMLElement)#26 (11) {
            
    ["id"]=>
            
    string(1"4"

    ...

    [
    "beruf"]=>
      
    object(SimpleXMLElement)#19 (1) {
        
    ["va_beruf"]=>
        
    object(SimpleXMLElement)#28 (1) {
          
    ["item"]=>
          array(
    3) {
            [
    0]=>
            
    object(SimpleXMLElement)#29 (10) {
              
    ["id"]=>
              
    string(1"4"
              
    ["beruf"]=>
              
    string(2"Hans im Glück" 
    Hier zu meiner Frage: Ich durchlaufe die "mitarbeiter" per foreach und möchte für jeden Mitarbeiter den Zutreffenden Beruf (Hans im Glück) herausfinden. Wie kann ich mit simplexml am einfachsten das gewünschte Element auslesen?

    Gibts ne Möglichkeit das ich direkt darauf zugreiffen kann oder muss ich nochmals per Schleife alles durchrattern?

  • #2
    Hallo,

    wie sieht dein bisheriger Versuch aus?

    Ohne SimpleXml näher zu kennen tippe ich nach einem kurzem Besuch von

    http://de3.php.net/simplexml (guck mal gleich auf das example#2)

    irgendwie was in der Richtung von

    PHP-Code:
    $xml->mitarbeiter[x]->beruf 
    tippen, wobei das x eben durch den entsprechenden (Array)-Index ersetzt werden muss, den du ja von deiner foreach-Schleiche kriegen müsstest.

    EDIT:
    wobei - wenn ich mir jetzt dein Beispiel da so anseh

    Kannst du mal die original Xml-Datei posten?
    Zuletzt geändert von Quetschi; 26.03.2008, 16:36.
    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


    • #3
      Momentan mache ich das so:

      PHP-Code:
      foreach($this->xmlData->mitarbeiter->item as $value)
      {
        foreach(
      $this->xmlData->beruf->va_beruf->item as $beruf)
        {
          if(
      $value->id == $beruf->id)
          {
             echo 
      $beruf->beruf;
          }
        }

      das Problem ist, das ich bei beruf->item die Nummer des Array nicht weiss, so kann ich nicht direkt darauf zugreiffen.

      Kommentar


      • #4
        puh - kenn wie gesagt simpleXml nicht wirklich.

        Mit Dom würd ich halt einfach mit ner XPath-Query direkt drauf zugreifen.
        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


        • #5
          ähm...

          PHP-Code:
          foreach($this->xmlData->mitarbeiter->item as $itemID=>$value)
          {
            echo 
          $this->xmlData->beruf->va_beruf->item[$itemID]->beruf;

          evtl.??

          UPDATE:
          na - glaub bin da auch wieder auf dem falschen Dampfer...
          Ich würde wie gesagt gern mal dein QuellXml sehen...
          Zuletzt geändert von Quetschi; 27.03.2008, 15:45.
          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


          • #6
            Mit Dom würd ich halt einfach mit ner XPath-Query direkt drauf zugreifen.
            Warum dann nicht auch mit SimpleXML?

            Kommentar


            • #7
              Original geschrieben von PHP-Desaster
              Warum dann nicht auch mit SimpleXML?
              Ich sagte doch, dass ich simpleXml praktisch so gut wie nicht kenne ...
              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


              • #8
                @in Simplexml Objekt

                Wie kann man auf @ in Simple xml Objekten zugreifen?
                BSP:
                FELDER=SimpleXMLElement Object
                (
                [@attributes] => Array
                (
                [name] => Zeichnung_Art
                [id] => 16
                [repetition] => 1
                [maxRepetition] => 1
                [table] => Zeichnung_Planum
                )
                )

                Möchte nun gerne auf den name zugreifen Problem
                $felder->{'@attributes'} hilft auch nicht.
                Vielleicht hat jemand noch einen Vorschlag wenn nicht muss ich es wohl auch mit x-Path machen :-(

                Kommentar


                • #9
                  ist ein Array

                  hat sich erledigt, @attributes ist ja ein Array, deshalb Zugriff über $felder["name"]

                  Kommentar


                  • #10
                    Zitat von halo1 Beitrag anzeigen
                    Wie kann man auf @ in Simple xml Objekten zugreifen?
                    BSP:
                    FELDER=SimpleXMLElement Object
                    (
                    [@attributes] => Array
                    (
                    [name] => Zeichnung_Art
                    [id] => 16
                    [repetition] => 1
                    [maxRepetition] => 1
                    [table] => Zeichnung_Planum
                    )
                    )

                    Möchte nun gerne auf den name zugreifen Problem
                    $felder->{'@attributes'} hilft auch nicht.
                    Vielleicht hat jemand noch einen Vorschlag wenn nicht muss ich es wohl auch mit x-Path machen :-(
                    Ausgehend von deiner Frage und der Struktur ($felder->) sollte es eigentlich so gehen:
                    PHP-Code:
                    <?php
                    $wert_des_attributs 
                    $felder->attributes()->name_des_attributs;
                     
                    // Als Beispiel
                    $wert $felder->attributes()->name;
                    echo 
                    $wert// gibt 'Zeichnung_Art' aus
                    ?>
                    Siehe auch http://de.php.net/manual/de/function...attributes.php
                    Zuletzt geändert von mkb_webprint; 13.07.2009, 11:19.

                    Kommentar

                    Lädt...
                    X